跳到主要内容

HLR 查询和呼叫模拟器 - 用户指南

概述

新增了两个诊断工具,以帮助运营人员在不影响实时流量的情况下排查呼叫路由问题。

HLR 查询工具

目的

HLR 查询工具通过 SS7 MAP 协议查询家庭位置寄存器 (HLR),以获取实时的用户路由信息。

访问

导航到 /hlr 或点击导航菜单中的 "HLR"。

显示内容

对于任何电话号码,HLR 查询显示:

  1. MSRN (移动台漫游号码)

    • 在用户漫游到 2G/3G 网络时分配的临时路由号码
    • 仅在用户当前漫游时存在
    • 被拨号计划用于将呼叫路由到漫游用户的当前位置
  2. 呼叫转移设置

    • 来自 HLR 的实时呼叫转移配置
    • 类型:无条件、忙碌、未应答、不可达
    • 显示转移目的地号码
    • 显示通知是否启用
  3. 拨号计划变量

    • 将设置的确切通道变量
    • 变量与实际呼叫处理中的变量匹配
    • 显示 HLR 数据如何覆盖 Sh 数据

使用案例

诊断漫游问题

场景: 对漫游用户的来电失败或路由不正确

步骤:

  1. 打开 HLR 查询页面
  2. 输入用户的电话号码
  3. 点击 "查询 HLR 数据"
  4. 检查结果中的 MSRN
  5. 如果 MSRN 存在:用户正在漫游,验证 MSRN 是否有效
  6. 如果没有 MSRN:用户可能在 LTE/VoLTE 中(不需要 MSRN)

验证呼叫转移

场景: 呼叫转移未按预期工作

步骤:

  1. 打开 HLR 查询页面
  2. 输入用户的电话号码
  3. 点击 "查询 HLR 数据"
  4. 在结果中查找 "呼叫转移"
  5. 验证转移类型(无条件、忙碌等)
  6. 验证转移目的地号码
  7. 注意:HLR 数据覆盖任何 Sh/HSS 数据

测试 HLR 连接性

场景: 验证 SS7 MAP 网关是否正常工作

步骤:

  1. 打开 HLR 查询页面
  2. 输入任何已知的用户号码
  3. 点击 "查询 HLR 数据"
  4. 检查结果中的 "错误"
  5. 如果有错误:检查 SS7 MAP 网关连接性
  6. 常见错误:
    • "SS7 MAP 已禁用" - 检查配置
    • "超时" - 到 HLR 的网络问题
    • "没有 VLR 号码" - 用户离线或不存在

信息框

HLR 查询页面包含教育信息,解释:

  • MSRN 是什么以及何时使用
  • HLR 中呼叫转移的工作原理
  • 这如何与呼叫处理集成
  • SS7 MAP 协议基础知识

呼叫模拟器工具

目的

呼叫模拟器���许您模拟完整的呼叫路由,而无需实际拨打电话或影响实时流量。

访问

导航到 /simulator 或点击导航菜单中的 "模拟器"。

特性

输入参数

  1. 源号码(呼叫方)

    • 呼叫方的电话号码
    • 对于 MT 呼叫:可以是任何号码
    • 对于 MO 呼叫:必须是已配置的用户
  2. 目标号码(被叫方)

    • 被叫方的电话号码
    • 对于 MT 呼叫:必须是已配置的用户
    • 对于 MO 呼叫:可以是任何号码
    • 对于紧急情况:使用 "urn:service:sos" 或类似
  3. 源 IP 地址

    • SIP 信令源的 IP 地址
    • 必须在 allowed_sbc_source_ips(对于 MT)或 allowed_cscf_ips(对于 MO)中
    • 决定呼叫处置(MT 与 MO)
  4. 强制处置

    • 自动:根据 IP 地址确定(正常行为)
    • MT:强制移动终止(来电)
    • MO:强制移动发起(去电)
    • 紧急:强制紧急呼叫处理
  5. 选项

    • 跳过 OCS 授权:绕过在线计费(更快的模拟)
    • 跳过 HLR 查询:绕过 SS7 MAP 查询(更快的模拟)

输出

模拟器显示全面的结果:

  1. 呼叫类型横幅

    • MT、MO 或紧急
    • 颜色编码以便快速识别
    • 显示源和目标号码
  2. 处理步骤(左列)

    • 用户数据:来自 Sh 接口(HSS)的结果
    • HLR 数据:来自 SS7 MAP 查询的结果(仅 MT)
    • OCS 授权:来自在线计费的结果(仅 MO)
    • 在网状态:目标是否在您的网络上(仅 MO)
  3. 拨号计划变量(右列)

    • 将在通道上设置的每个变量
    • 按字母顺序排序以便于阅读
    • 颜色编码值(绿色表示正常,红色表示错误)
  4. 处理说明

    • 逐步解释发生了什么
    • 描述数据流和决策点
    • 帮助理解为什么设置了某些变量

使用案例

飞行前测试

场景: 在部署到生产环境之前测试配置更改

步骤:

  1. 在开发/测试环境中进行配置更改
  2. 打开呼叫模拟器
  3. 测试多个场景:
    • 从您的 SBC 发起的 MT 呼叫
    • 从您的 CSCF 发起的 MO 呼叫
    • 紧急呼叫
    • 在网目标
    • 不在网目标
  4. 验证所有变量是否正确
  5. 检查处理说明以获取任何问题
  6. 自信地部署到生产环境

调试 MT 呼叫问题

场景: 对用户的来电失败

步骤:

  1. 打开呼叫模拟器
  2. 输入目标作为问题用户
  3. 输入源作为测试号码
  4. 将源 IP 设置为您的 SBC IP
  5. 将强制处置保持为 "自动"
  6. 点击 "模拟呼叫"
  7. 检查��户数据部分以确认 Sh 查询成功
  8. 检查 HLR 数据部分以获取 MSRN 或转移
  9. 检查最终变量以获取 hangup_case
  10. 如果 hangup_case 为 "UNALLOCATED_NUMBER":用户未配置
  11. 如果变量看起来正确:问题可能出在拨号计划模板中

调试 MO 呼叫问题

场景: 用户的去电失败

步骤:

  1. 打开呼叫模拟器
  2. 输入源作为问题用户
  3. 输入目标作为测试号码
  4. 将源 IP 设置为您的 CSCF IP
  5. 如果测试计费,请取消选中 "跳过 OCS 授权"
  6. 点击 "模拟呼叫"
  7. 检查呼叫者数据部分以确认 Sh 查询成功
  8. 检查 OCS 授权部分以获取成功/失败
  9. 检查在网状态以验证正确路由
  10. 检查最终变量以获取 allocated_timehangup_case
  11. 如果 hangup_case 为 "OUTGOING_CALL_BARRED":OCS 拒绝了呼叫

测试紧急呼叫处理

场景: 验证紧急呼叫是否正常工作

步骤:

  1. 打开呼叫模拟器
  2. 输入源作为测试用户
  3. 输入目标为 "urn:service:sos"
  4. 设置任何源 IP(紧急呼叫绕过 IP 认证)
  5. 点击 "模拟呼叫"
  6. 验证呼叫类型显示为 "紧急 (SOS)"
  7. 验证 hangup_case 为 "none"(紧急呼叫始终继续)
  8. 检查 OCS 和 HLR 是否被绕过
  9. 验证调用者数据已检索���位置信息

培训员工

场景: 教授运营人员呼叫路由的工作原理

步骤:

  1. 打开呼叫模拟器
  2. 运行各种场景并解释每个部分:
    • 显示 MT 呼叫并解释 Sh + HLR 查询
    • 显示 MO 呼叫并解释 OCS 授权
    • 显示紧急呼叫并解释绕过行为
    • 显示未经授权的 IP 并解释拒绝
  3. 让员工尝试不同组合
  4. 使用处理说明解释每个决策
  5. 比较不同场景之间的变量

比较 Sh 与 HLR 数据

场景: 理解 HLR 如何覆盖 Sh 数据

步骤:

  1. 打开 MT 呼叫的呼叫模拟器
  2. 取消选中 "跳过 HLR 查询"
  3. 点击 "模拟呼叫"
  4. 比较用户数据变量与 HLR 数据变量
  5. 检查最终变量以查看哪些值胜出
  6. 注意:HLR 数据始终优先:
    • MSRN
    • call_forward_all_destination
    • call_forward_not_reachable_destination

提示

  • 在测试其他方面时,使用 "跳过 OCS 授权" 和 "跳过 HLR 查询" 以加快模拟速度
  • 从日志中复制/粘贴电话号码到模拟器以快速测试
  • 使用 "强制处置" 测试特定呼叫类型,无论 IP 如何
  • 如果不确定为什么设置了某些变量,请检查处理说明
  • 多次运行模拟以验证一致性
  • 将模拟结果与实际呼叫日志进行比较

限制

模���器:

  • 不会实际拨打电话
  • 不会影响呼叫路由系统
  • 不会消耗 OCS 配额(即使查询了 OCS)
  • 不会生成 CDR
  • 在生产系统上使用是安全的

模拟器确实:

  • 如果未跳过,则查询实际的 Sh 接口(HSS)
  • 如果未跳过,则通过 SS7 MAP 查询实际的 HLR
  • 如果未跳过,则查询实际的 OCS
  • 显示在真实呼叫中会发生的确切情况
  • 使用真实的配置值

与监控的集成

这两个工具与 Prometheus 指标集成:

  • 通过该工具的 HLR 查询计入 hlr_lookups_total
  • 呼叫模拟计入 call_simulations_total{call_type, source}
  • 处理时间在各自的持续时间指标中跟踪

这有助于:

  • 跟踪诊断工具的使用
  • 监控诊断查询的性能
  • 识别重度使用诊断工具的用户

有关完整指标文档: 请参见 metrics.md 以获取所有可用指标、查询示例和监控设置。

最佳实践

  1. 首先使用呼叫模拟器

    • 在进行配置更改之前
    • 在排查特定用户问题时
    • 理解呼叫流程以进行培训
  2. 使用 HLR 查询进行

    • 快速检查漫游状态
    • 验证来自 HLR 的呼叫转移
    • 测试 SS7 MAP 连接性
  3. 记录发现

    • 截取模拟器结果的屏幕截图
    • 记录任何意外行为
    • 与团队分享结果以进行分析
  4. 与日志进行比较

    • 使用与失败呼叫相同的参数运行模拟
    • 将模拟变量与实际呼叫日志进行比较
    • 识别差异
  5. 定期测试

    • 每周使用模拟器进行抽查
    • 测试每种呼叫类型(MT/MO/紧急)
    • 验证 OCS 和 HLR 集成

工具故障排除

HLR 查询问题

工具显示 "SS7 MAP 已禁用"

  • 检查 config/runtime.exs 中的 ss7_map.enabled
  • 配置更改后重启应用程序

工具显示超时错误

  • 检查 SS7 MAP 网关是否可达
  • 检查到 HLR 的网络连接
  • 检查配置中的 ss7_map.timeout_ms

工具显示 "没有 VLR 号码"

  • 用户离线或在 HLR 中不存在
  • 对于关闭电源的用户是正常的
  • 对于不存在的号码是正常的

呼叫模拟器问题

模拟器显示 "没有 Sh 数据"

  • 用户未在 HSS 中配置
  • HSS 无法访问
  • 检查 diameter.sh_application 配置

模拟器显示 "源 IP 未授权"

  • IP 不在 allowed_sbc_source_ipsallowed_cscf_ips
  • 使用 "强制处置" 来覆盖基于 IP 的认证

模拟器显示 "缺少必需参数"

  • 除选项外,所有字段都是必需的
  • 输入有效的电话号码
  • 输入有效的 IP 地址

模拟器耗时过长

  • 如果不测试 OCS,请取消选中 "跳过 OCS 授权"
  • 如果不测试 HLR,请取消选中 "跳过 HLR 查询"
  • 检查实际系统性能(Sh/HLR/OCS 响应时间)

支持

有关这些工具的问题:

  1. 检查应用程序日志以获取错误
  2. 验证配置(Sh、HLR、OCS)
  3. 测试与外部系统的连接
  4. 联系支持团队,提供屏幕截图和错误消息