跳到主要内容

Sh 接口(用户数据检索)

📖 返回主文档

Sh 接口通过 Diameter 提供对 HSS/Repository 中用户个人资料数据的访问。

相关文档

核心文档

呼叫处理集成

相关接口

监控


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_identityIMPI505014001234567@ims.domain用于身份验证的私有用户身份
ims_public_identityIMPUsip:+61403123456@ims.domain用于路由的公共用户身份
msisdnIMPU(解析)61403123456用户号码(去掉 +)
imsiIMPI(解析)505014001234567来自私有身份的 IMSI
ims_domainIMPI/IMPUims.mnc001.mcc505.3gppnetwork.orgIMS 域
scscf_addressS-CSCF 名称scscf01.ims.domain"none"S-CSCF 服务器地址
scscf_domainS-CSCF 域ims.domain"none"S-CSCF 域
call_forward_all_destinationMMTel CDIV61403555123"none"CFA 目标号码
call_forward_not_reachable_destinationMMTel CDIV2222 或配置默认值CFNRc 目标(语音信箱)
no_reply_timerMMTel CDIV30 或配置默认值CFNRy 激活前的超时

优先级:Sh 数据与配置默认值

TAS 对呼叫转移数据使用以下优先级:

  1. 来自 Sh 的 MMTel-Config(最高优先级 - 用户特定设置)
  2. 来自 SS7 MAP 的 HLR 数据(在漫游/转移活动时覆盖 Sh 的 MT 呼叫)
  3. 配置默认值(最低优先级 - 在没有 Sh 数据可用时使用)

示例:

# 配置默认值(仅在 Sh 不返回 MMTel-Config 时使用)
config :tas,
call_forward_not_reachable_destination: "2222", # 语音信箱
default_no_reply_timer: 30

当 Sh 查找失败时会发生什么

失败场景:

  1. 用户未在 HSS 中配置:

    • Sh 返回“用户未知”错误
    • hangup_case 变量设置为 "UNALLOCATED_NUMBER"
    • 呼叫被拒绝,返回适当的 SIP 响应
  2. HSS 无法访问 / 超时:

    • Sh 请求超时(默认:5000ms)
    • 记录错误并记录指标
    • 呼叫可能被拒绝或使用默认值路由(特定于部署)
  3. 响应中没有 MMTel-Config:

    • 用户存在但没有配置呼叫转移
    • 对于 call_forward_not_reachable_destinationno_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 严重故障

故障排除:

  1. 检查 Web UI 中的 Diameter 对等状态 (/diameter)
  2. 在 Web UI 中测试 Sh 查找 (/sh_test) 使用已知用户
  3. 检查日志中的“用户数据”错误
  4. 验证 TAS 是否可以访问 HSS/Repository
  5. 检查 subscriber_data_lookups_total 指标以查找模式

测试 Sh 接口

使用 Web UI Sh 测试工具 (/sh_test):

  1. 在控制面板中导航到 /sh_test
  2. 输入用户 MSISDN(例如,+61403123456
  3. 点击“查询 Sh”
  4. 查看返回的数据:
    • IMPI/IMPU 身份
    • S-CSCF 分配
    • MMTel 服务
    • 呼叫转移配置

常见测试场景:

  • 验证新配置的用户是否在 HSS 中
  • 检查特定用户的呼叫转移设置
  • 验证 IMS 注册后的 S-CSCF 分配
  • 测试 HSS 连接性和响应时间