Sh 接口(用户数据检索)
📖 返回主文档
Sh 接口通过 Diameter 提供对 HSS/Repository 中用户个人资料数据的访问。
相关文档
核心文档
呼叫处理集成
相关接口
监控
- 📊 指标参考 - Sh 接口指标和监控
Sh 接口(用户数据检索)
Sh 接口用于在处理呼叫之前从 HSS/Repository 检索用户个人资料数据。该数据包括用户身份、服务和 MMTel 配置。
什么是 Sh 接口?
Sh 接口是 TAS 和 HSS/Repository(Repo)之间的 3GPP 标准化 Diameter 接口。它提供实时访问:
- IMS 用户身份(IMPI/IMPU)
- 呼叫转移设置(MMTel-Config)
- 用户服务授权
- S-CSCF 分配
Sh 查找何时发生
Sh 查找发生在:
- MT 呼叫: 查找被叫方(目标用户)
- MO 呼叫: 查找主叫方(源用户)
- 紧急呼叫: 查找主叫方(用于位置/身份)
从 Sh 接口检索的数据
TAS 查询 Sh-User-Data,返回包含以下内容的 XML 文档:
1. IMS 身份:
- IMPI(私有身份):
username@domain- 用于身份验证- 格式:
{IMSI}@ims.mnc{MNC}.mcc{MCC}.3gppnetwork.org - 示例:
505014001234567@ims.mnc001.mcc505.3gppnetwork.org
- 格式:
- IMPU(公共身份):
sip:+number@domain- 用于路由- 格式:
sip:+{MSISDN}@ims.mnc{MNC}.mcc{MCC}.3gppnetwork.org - 示例:
sip:+61403123456@ims.mnc001.mcc505.3gppnetwork.org
- 格式:
2. S-CSCF 分配:
- 用户注册的 S-CSCF 服务器名称和域
- 用于将网络内呼叫路由回 IMS 核心
3. MMTel 服务(多媒体电话配置):
- 呼叫转移全部(CFA): 无条件转移到另一个号码
- 呼叫转移忙(CFB): 当用户忙时转移
- 呼叫转移无应答(CFNRy): 超时后转移(包括计时器值)
- 呼叫转移不可达(CFNRc): 当用户离线/未注册时转移
什么是 MMTel-Config?
MMTel-Config 是存储在 HSS/Repository 中的用户多媒体电话服务配置。它包含:
<MMTelSS>
<CDIV>
<SS-ActivationState>active</SS-ActivationState>
<Ruleset>
<Rule>
<RuleCondition>communication-diverted</RuleCondition>
<ForwardTo>+61403555123</ForwardTo>
<NotificationType>notify</NotificationType>
</Rule>
</Ruleset>
</CDIV>
</MMTelSS>
常见的 MMTel 服务:
- CDIV(通信转移): 呼叫转移规则
- OIP(主叫身份展示): 主叫号码展示规则
- TIP(被叫身份展示): 被叫方号码规则
从 Sh 数据设置的拨号计划变量
在成功的 Sh 查找后,这些变量会被填充:
| 变量 | 来源 | 示例值 | 描述 |
|---|---|---|---|
ims_private_identity | IMPI | 505014001234567@ims.domain | 用于身份验证的私有用户身份 |
ims_public_identity | IMPU | sip:+61403123456@ims.domain | 用于路由的公共用户身份 |
msisdn | IMPU(解析) | 61403123456 | 用户号码(去掉 +) |
imsi | IMPI(解析) | 505014001234567 | 来自私有身份的 IMSI |
ims_domain | IMPI/IMPU | ims.mnc001.mcc505.3gppnetwork.org | IMS 域 |
scscf_address | S-CSCF 名称 | scscf01.ims.domain 或 "none" | S-CSCF 服务器地址 |
scscf_domain | S-CSCF 域 | ims.domain 或 "none" | S-CSCF 域 |
call_forward_all_destination | MMTel CDIV | 61403555123 或 "none" | CFA 目标号码 |
call_forward_not_reachable_destination | MMTel CDIV | 2222 或配置默认值 | CFNRc 目标(语音信箱) |
no_reply_timer | MMTel CDIV | 30 或配置默认值 | CFNRy 激活前的超时 |
优先级:Sh 数据与配置默认值
TAS 对呼叫转移数据使用以下优先级:
- 来自 Sh 的 MMTel-Config(最高优先级 - 用户特定设置)
- 来自 SS7 MAP 的 HLR 数据(在漫游/转移活动时覆盖 Sh 的 MT 呼叫)
- 配置默认值(最低优先级 - 在没有 Sh 数据可用时使用)
示例:
# 配置默认值(仅在 Sh 不返回 MMTel-Config 时使用)
config :tas,
call_forward_not_reachable_destination: "2222", # 语音信箱
default_no_reply_timer: 30
当 Sh 查找失败时会发生什么
失败场景:
-
用户未在 HSS 中配置:
- Sh 返回“用户未知”错误
hangup_case变量设置为"UNALLOCATED_NUMBER"- 呼叫被拒绝,返回适当的 SIP 响应
-
HSS 无法访问 / 超时:
- Sh 请求超时(默认:5000ms)
- 记录错误并记录指标
- 呼叫可能被拒绝或使用默认值路由(特定于部署)
-
响应中没有 MMTel-Config:
- 用户存在但没有配置呼叫转移
- 对于
call_forward_not_reachable_destination和no_reply_timer使用配置默认值 - 呼叫正常进行,使用默认值
监控 Sh 接口
关键指标:
# Sh 查找成功率
rate(subscriber_data_lookups_total{result="success"}[5m]) /
rate(subscriber_data_lookups_total[5m]) * 100
# Sh 查找延迟(P95)
histogram_quantile(0.95,
rate(subscriber_data_duration_milliseconds_bucket[5m]))
# Sh 错误率
rate(subscriber_data_lookups_total{result="error"}[5m])
警报阈值:
- P95 延迟 > 100ms:HSS 响应缓慢
- 错误率 > 5%:HSS 连接问题
- 错误率 > 20%:HSS 严重故障
故障排除:
- 检查 Web UI 中的 Diameter 对等状态 (
/diameter) - 在 Web UI 中测试 Sh 查找 (
/sh_test) 使用已知用户 - 检查日志中的“用户数据”错误
- 验证 TAS 是否可以访问 HSS/Repository
- 检查
subscriber_data_lookups_total指标以查找模式
测试 Sh 接口
使用 Web UI Sh 测试工具 (/sh_test):
- 在控制面板中导航到
/sh_test - 输入用户 MSISDN(例如,
+61403123456) - 点击“查询 Sh”
- 查看返回的数据:
- IMPI/IMPU 身份
- S-CSCF 分配
- MMTel 服务
- 呼叫转移配置
常见测试场景:
- 验证新配置的用户是否在 HSS 中
- 检查特定用户的呼叫转移设置
- 验证 IMS 注册后的 S-CSCF 分配
- 测试 HSS 连接性和响应时间