跳到主要内容

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 更新过程1SGSN 切换3G/2G 切换场景
订阅撤回2管理终止通过 API 手动分离
更新过程 IWF3互通功能更新传统网络互操作
初始附着过程4新注册强制重新认证

CLR 标志​

CLR 标志 AVP 是一个位掩码,具有以下字段:

标志位描述
S6a/S6d 指示器01 = 使用 S6a 接口
重新附着所需11 = 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 注册的主键

重要说明​

  1. IMSI 是关键: CLR 操作始终是 按 IMSI,而不是按 MSISDN。subscriber_state 表按用户 (IMSI) 跟踪 last_seen_mme。

  2. 原子操作: 每个用户一次只能在一个 MME 注册���自动 CLR 通过清理旧注册来确保这一点。

  3. 如果没有先前的 MME 则不发送 CLR: 如果 last_seen_mme 为 nil(用户从未注册),在 ULR 期间不发送 CLR。

  4. 包含订阅数据: 自动 CLR(在 ULR 期间)包括完整的 Subscription-Data AVP,以帮助旧 MME 正确清理上下文。

  5. 异步: CLR 是异步发送的(火并忘记)。对新 MME 的 ULA 响应不等待来自旧 MME 的 CLA。

  6. CLA 处理: OmniHSS 接收 CLA 响应,但当前会丢弃它们。这防止了消息循环,并且是标准 HSS 行为。


SWx 接口 (非 3GPP 接入 / WiFi 通话)​

SWx 接口通过将 ePDG(演进数据包网关)连接到 HSS,以便在非 3GPP 接入网络上进行用户认证和授权,从而启用 WiFi 通话。

多媒体认证请求 (MAR/MAA)​

ePDG 请求 WiFi 通话注册的 EAP-AKA 认证向量。

关键 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_ASSIGNMENT0仅查询,无状态变化
REGISTRATION1初始 WiFi 通话注册
RE_REGISTRATION2注册刷新
UNREGISTERED_USER3未注册用户的服务
TIMEOUT_DEREGISTRATION4注册超时
USER_DEREGISTRATION5用户发起的注销
AUTHENTICATION_FAILURE7认证失败,清除状态
ADMINISTRATIVE_DEREGISTRATION8管理员发起的注销

关键 AVP:

  • 请求: 用户名 (IMSI), 服务器分配类型, 服务器名称 (ePDG 身份), 服务选择 (APN)
  • 响应: 用户数据 (IFC 配置文件 XML), 非 3GPP 用户数据

WiFi 通话注册流程​

完整的端到端 WiFi 通话注册。


Cx 接口 (IMS)​

用户授权请求 (UAR/UAA)​

I-CSCF 询问用户是否可以注册,以及使用哪个 S-CSCF。HSS 返回一个 S-CSCF 名称(一个 Server-Name),而不是能力集。名称和结果代码遵循 S-CSCF 分配状态 规则。

服务器分配请求 (SAR/SAA)​

S-CSCF 注册/注销用户并检索 IMS 配置文件。

IFC 模板渲染:

  • {{imsi}} → 实际 IMSI
  • {{msisdns}} → 电话号码列表
  • {{mcc}}, {{mnc}} → 家庭 PLMN 代码

有关 SAR 如何更新注册状态和认证待处理状态,以及如何处理 AUTHENTICATION_FAILURE 和 AUTHENTICATION_TIMEOUT,请参见 S-CSCF 分配状态。

多媒体认证请求 (MAR/MAA)​

S-CSCF 请求 IMS 注册的认证向量。

S-CSCF 分配状态​

HSS 为每个用户持有两个独立的 IMS 状态。注册状态和认证待处理状态是独立的,符合 3GPP TS 29.228 §3.1。

状态字段设置于清除于含义
assigned_scscfSAR 成功(注册)SAR 注销,认证失败/超时(未注册),或认证失败/超时使过时名称失效用户在此 S-CSCF 上注册。
auth_pending_scscfMARSAR(成功或认证失败/超时),UAR 注销,或 TTL 到期此 S-CSCF 上正在进行 IMS-AKA 挑战。
auth_pending_sinceMAR与 auth_pending_scscf 一起挑战开始的时间。HSS 使用它来使未完成的挑战过���。

MAR 存储 S-CSCF 名称并设置认证待处理状态,符合 TS 29.228 §6.3。SAR 确认或清除它,符合 TS 29.228 §6.1.2。

UAA S-CSCF 选择顺序。 对于每个 UAR,HSS 返回一个 S-CSCF 名称和一个结果代码,优先级如下:

  1. 记录中有一个活动的认证待处理 S-CSCF:返回它,带有 DIAMETER_SUBSEQUENT_REGISTRATION (2002)。当 auth_pending_scscf 被设置且 auth_pending_since 在 auth_pending_ttl_seconds 内时,挑战是活动的。
  2. assigned_scscf 持有一个真实的 S-CSCF 节点:返回它,带有 DIAMETER_SUBSEQUENT_REGISTRATION (2002)。
  3. 两者都不适用:选择一个新的 S-CSCF(见 S-CSCF 选择配置),带有 DIAMETER_FIRST_REGISTRATION (2001)。

规则 2 有意测试真实节点。池 URI 是整个池的名称,因此它从不识别为用户提供服务的节点。如果早期版本记录了池 URI,HSS 将用户视为未服务,并回答 2001。下一个 SAR 将存储真实节点。

重新注册始终返回服务 S-CSCF。 规则 2 使分配保持不变。在节点接收注册后,每个重新注册 UAR 和每个终止 LIR 都返回该节点。HSS 仅对尚未服务的用户返回�� URI。

HSS 优先选择认证待处理 S-CSCF 而不是 assigned_scscf。这使得正在进行的挑战周期收敛到发起挑战的节点。对于健康注册的用户,发起挑战的节点是分配的节点,因此优先级没有影响。它仅在 S-CSCF 故障恢复 中重要。

认证待处理状态会过期。 挑战周期在几秒钟内完成,每个结果都会发送一个 SAR 来清除状态。如果发起挑战的 S-CSCF 从未发送该 SAR,则待处理名称将保留在记录中。HSS 会忽略超过 auth_pending_ttl_seconds(默认 30 秒)的待处理名称。如果没有 TTL,孤立或被遗弃的 MAR 将永远超越已注册的绑定。发起的流量将发送到持有无内容的节点,而终止流量仍将发送到 assigned_scscf。

Cx 结果代码:

代码名称含义参考
2001DIAMETER_FIRST_REGISTRATION没有记录的 S-CSCF。返回的名称是选择。TS 29.229
2002DIAMETER_SUBSEQUENT_REGISTRATION记录中有一个 S-CSCF。HSS 返回存储的名称。TS 29.229

相关的服务器分配类型值 (SAR):

值名称HSS 操作
0NO_ASSIGNMENT清除 S-CSCF 名称和注册。
1REGISTRATION将注册状态设置为已注册。清除待认证。
2RE_REGISTRATION保持注册。清除待认证。
4TIMEOUT_DEREGISTRATION清除 S-CSCF 名称和注册。
5USER_DEREGISTRATION清除 S-CSCF 名称和注册。
6TIMEOUT_DEREGISTRATION_STORE_SERVER_NAME结束注册。保留 S-CSCF 名称。
7USER_DEREGISTRATION_STORE_SERVER_NAME结束注册。保留 S-CSCF 名称。
8ADMINISTRATIVE_DEREGISTRATION清除 S-CSCF 名称和注册。
9AUTHENTICATION_FAILURE保持已注册的绑定,除非记录上的名称过时。在未注册时清除 S-CSCF 名称。
10AUTHENTICATION_TIMEOUT保持已注册的绑定,除非记录上的名称过时。在未注册时清除 S-CSCF 名称。
11DEREGISTRATION_TOO_MUCH_DATA清除 S-CSCF 名称和注册。

类型 6 和 7 结束注册,但保留 S-CSCF 名称,依据 TS 29.228 §6.1.2。该节点继续为订阅者的未注册状态提供服务,因此稍后的 UAR 仍然解析到它。

过时名称检测在认证失败时。 AUTHENTICATION_FAILURE 或 AUTHENTICATION_TIMEOUT SAR 通常保持已注册订阅者的绑定。只有一个例外。如果 SAR 来自于与记录上不同的 S-CSCF,则 I-CSCF 必须将 REGISTER 重新分叉到池中,因为它无法到达记录上的节点。HSS 然后将该名称清除为过时。如果没有此规则,S-CSCF 故障恢复 不会收敛:HSS 会在每个后续的 UAR 中返回死节点,只有 UE 在任何超时 SAR 之前完成的挑战才能恢复订阅者。

请参见 hss_cx_auth_abandon_total 指标以获取被放弃或失败的挑战的可见性。

每个订阅一个 S-CSCF​

共享 IMS 订阅将多个 IMSI 或多个 MSISDN 组合在一个身份下(见 多 MSISDN 和多 IMSI 特性)。必须有且仅有一个 S-CSCF 为整个订阅提供服务。如果两个成员在不同节点上注册,终止呼叫将到达一个没有被叫方绑定的节点。

HSS 在 IMS 订阅上持有一个共享的 S-CSCF 名称,称为锚:

  1. 第一个成员注册。没有设置锚,因此 UAA 返回一个选择(一个池 URI,或 :random_peer 下的节点)。
  2. 一个真实节点接受注册并发送其 SAR。HSS 将订阅锚定到该节点。
  3. 每个后续成员读取锚。其 UAA 返回锚定的节点,因此每个成员都落在同一个 S-CSCF 上。
  4. 当最后一个成员注销时,锚被释放。

HSS 从不锚定池 URI。池 URI 命名池,而不是节点,因此 HSS 仅在 I-CSCF 解析它的时间内持有它。如果锚持有来自早期版本的池 URI,则下一个 SAR 会用真实的服务节点替换它。

S-CSCF 故障恢复​

如果记录上的 S-CSCF 无法访问,I-CSCF 会将 REGISTER 重新发送到 S-CSCF 池。一个活跃的 S-CSCF 然后为订阅者提供服务。这需要 I-CSCF 池回退路由和 HSS auth_pending_scscf 偏好一起使用。

有两种故障模式:

故障模式表现方式恢复
无法解析的 S-CSCF 名称(HSS 数据中的退役或过时名称)DNS 返回 NXDOMAIN。I-CSCF 转发失败,在创建分支之前。I-CSCF 重新发送到池 URI。DNS SRV 选择一个活跃的 S-CSCF。
可解析但死 S-CSCF(S-CSCF 服务已关闭)TCP 连接拒绝。分支异步失败。I-CSCF 从其故障路由重新发送到池 URI。use_dst_blocklist 和 use_dns_failover 使 DNS 跳过死节点。

经过认证的 REGISTER 必须到达发出挑战的同一个活跃 S-CSCF。UAA 中的 auth_pending_scscf 偏好使这一点得以实现:在活跃节点发送其 MAR 之后,HSS 在下一个 UAR 中返回该节点,而不是记录上的死节点。如果没有该偏好,这两个 REGISTER 将发送到不同的池成员,循环将无法收敛。

限制。 如果 S-CSCF 在 IMS-AKA 挑战周期中被杀死,UE 将被新的 S-CSCF 以新的随机数重新挑战。UE 在下一个注册时恢复。这是由于在挑战中间更换 S-CSCF 的固有特性,因为正在进行的认证向量无法转移到不同的 S-CSCF。

要启用此恢复,请设置 selection_method: :pool_uri(见 S-CSCF 选择配置)并部署 I-CSCF 池回退路由。

位置信息请求 (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 会话建立时请求策略规则。

关键 AVP:

  • 请求: Subscription-Id (IMSI), Called-Station-Id (APN), RAT-Type, IP-CAN-Type
  • 响应: QoS-Information (QCI, ARP, AMBR), Charging-Rule-Install

信用控制请求 - 更新 (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 使用直径应用 ID 16777302 (3GPP TS 29.219)。HSS 是 Sy 客户端;OCS 是服务器。请参见 Sy 接口 以获取完整参考(策略计数器映射、AVP、配置)。

支出限制请求 (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 在通过 SLg 请求其位置之前发现当前为订阅者提供服务的 MME。提供服务的 MME 是在 S6a 注册(更新位置)时记录的。SLh 使用直径应用 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 认证向量以进行引导。

关键 AVP:

  • 请求: User-Name (IMPI), Public-Identity, SIP-Auth-Data-Item (认证方案), Destination-Realm
  • 响应: SIP-Auth-Data-Item (SIP-Authenticate, SIP-Authorization, Confidentiality-Key, Integrity-Key), GBA-UserSecSettings

GBA 使用案例:

应用程序描述
MBMS移动广播多播服务密钥管理
HTTPS基于 GBA 的证书配置
NAF通用网络应用功能认证
Presence安全的在线状态服务认证

SWm 接口(不受信的非 3GPP 访问)​

SWm 接口通过将 3GPP AAA 服务器连接到 HSS,为不受信的非 3GPP 访问网络(例如,通过 ePDG 的 WiFi)启用 EAP-AKA 认证。

Diameter-EAP-Request (DER/DEA)​

WiFi 访问的 EAP 认证交换。

关键 AVP:

  • 请求: Session-Id, Auth-Application-Id, EAP-Payload, Auth-Request-Type, User-Name (可选)
  • 响应: EAP-Payload, EAP-Master-Session-Key (MSK), APN-Configuration, Session-Timeout

AA-Request (AAR/AAA)​

成功 EAP 认证后的授权。

关键 AVP:

  • 请求: Session-Id, Auth-Application-Id, User-Name, Auth-Request-Type, AAR-Flags
  • 响应: APN-Configuration, 3GPP-Charging-Characteristics, Session-Timeout

Session-Termination-Request (STR/STA)​

WiFi 会话终止通知。

终止原因:

原因值描述
DIAMETER_LOGOUT1用户注销
DIAMETER_SERVICE_NOT_PROVIDED2服务不可用
DIAMETER_BAD_ANSWER3协议错误
DIAMETER_ADMINISTRATIVE4管理员终止
DIAMETER_LINK_BROKEN5连接丢失
DIAMETER_AUTH_EXPIRED6认证超时
DIAMETER_USER_MOVED7用户移动到其他接入
DIAMETER_SESSION_TIMEOUT8会话超时

故障排除协议问题​

认证失败 (S6a AIR)​

检查:

  1. 密钥集配置正确 (Ki, OPC, AMF)
  2. SQN 同步(如果重复失败)
  3. 漫游规则允许访问的网络

位置更新失败 (S6a ULR)​

检查:

  1. EPC 配置文件存在并已配置 APN
  2. 数据服务���许漫游
  3. MME 身份格式正确

IMS 注册失败 (Cx SAR)​

检查:

  1. IMS 配置文件已分配给用户
  2. IFC 模板有效 XML
  3. S-CSCF 选择已配置
  4. 如果在模板中使用,则分配 MSISDN

PDN 连接失败 (Gx CCR-I)​

检查:

  1. APN 在 EPC 配置文件的 APN 列表中存在
  2. APN QoS 配置文件已配置
  3. PDN 会话表未满(如果存在限制)

← 返回操作指南