OmniHSS 协议流程
概述
本文档详细说明了 OmniHSS 支持的 Diameter 协议消息流程。理解这些流程对于故障排除和操作至关重要。
S6a 接口 (LTE/EPC)
认证信息请求 (AIR/AIA)
MME 请求用户的认证向量。
关键 AVP:
- 请求: 用户名 (IMSI), 访问-PLMN-Id, 请求的向量数量
- 响应: 认证信息 (RAND, AUTN, XRES, KASME)
更新位置请求 (ULR/ULA)
MME 通知 HSS 用户位置并检索订阅数据。
关键 AVP:
- 请求: 用户名 (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 以清理过时的注册。
关键 AVP (自动 CLR):
- 用户名: 用户的 IMSI
- 目标主机: 之前的 MME 主机名
- 目标域: 之前的 MME 域
- 取消类型: 0 (MME 更新过程)
- CLR 标志: 0
- 订阅数据: 完整的订阅配置文件
程序化 CLR (API 触发)
管理员可以通过程序化 API 触发 CLR,以强制分离用户(例如,因订阅撤回、欺诈预防或管理操作)。
关键 AVP (程序化 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: 多个用户(不同 IMSI),相同 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
- 所有 MSISDN 与该 IMSI 关联的都被有效分离
- 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 请求 EAP-AKA 认证向量以进行 WiFi 通话注册。
关键 AVP:
- 请求: 用户名 (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 | 管理员发起的注销 |
关键 AVP:
- 请求: 用户名 (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 配置文件数据)
用户数据请求 (UDR/UDA)
应用服务器请求用户配置文件数据。
配置文件更新请求 (PUR/PUA)
应用服务器更新用户配置文件数据。
订阅通知请求 (SNR/SNA)
应用服务器订阅配置文件更改。
Gx 接口 (策略控制)
OmniHSS 通过 Gx 接口作为 PCRF(策略和计费规则功能)运行。
请参阅 PCRF 文档 以获取详细的架构、策略配置和 QoS 管理。
信用控制请求 - 初始 (CCR-I/CCA-I)
P-GW 在建立 PDN 会话时请求策略规则。
关键 AVP:
- 请求: 订阅 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 会话结束。
S13 接口 (EIR)
OmniHSS 通过 S13 接口作为 EIR(设备身份注册)运行。
请参阅 EIR 文档 以获取详细的设备身份检查、IMEI 验证和黑名单管理。
ME 身份检查请求 (ECR/ECA)
外部 EIR 客户端(或 MME)请求设备验证。
设备状态值:
- 设备未知 (0) - 设备允许(白名单)
- 设备被列入黑名单 (1) - 设备被阻止
- 设备被列入灰名单 (2) - 设备允许但被跟踪
完整呼叫流程: VoLTE 通话
端到端 VoLTE 通话设置,显示多个接口。
Zh 接口 (通用引导架构)
Zh 接口通过将引导服务器功能 (BSF) 连接到 HSS,以实现通用引导架构 (GBA) 的用户认证和密钥派生。
多媒体认证请求 (MAR/MAA)
BSF 请求 GBA 认证向量以进行引导。
关键 AVP:
- 请求: 用户名 (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)
EAP 认证交换以进行 WiFi 访问。
关键 AVP:
- 请求: 会话 ID, 认证应用 ID, EAP-Payload, 认证请求类型, 用户名 (可选)
- 响应: EAP-Payload, EAP 主会话密钥 (MSK), APN 配置, 会话超时
AA-请求 (AAR/AAA)
成功 EAP 认证后的授权。
关键 AVP:
- 请求: 会话 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 配置文件存在并且已配置 APN
- 数据服务允许漫游
- MME 身份格式正确
IMS 注册失败 (Cx SAR)
检查:
- IMS 配置文件已分配给用户
- IFC 模板有效 XML
- S-CSCF 选择已配置
- 如果在模板中使用,则分配 MSISDN
PDN 连接失败 (Gx CCR-I)
检查:
- APN 在 EPC 配置文件的 APN 列表中存在
- APN QoS 配置文件已配置
- PDN 会话表未满(如果存在限制)