订阅者查找功能 (SLF)
订阅者查找功能 (SLF) 动态学习每个订阅者由哪个网络元素提供服务。它观察通过 DRA 的 Diameter 信令流量。它使用学习到的绑定直接将后续请求(例如位置服务查询)路由到正确的服务节点。它不需要静态路由规则。
这对于 SLg/SLh 位置服务请求非常有用。GMLC 需要到达给定订阅者的服务 MME,但不知道是哪一个 MME。
3GPP TS 29.172 和 3GPP TS 29.173 描述了位置服务的 SLF 概念。3GPP TS 29.272 定义了订阅者注册。
工作原理
该模块分为两个阶段:学习和路由。
在 学习 阶段,模块观察通过 DRA 流动的注册和注销消息。当订阅者注册(例如通过 S6a Update-Location-Request)时,模块记录哪个网络元素现在为该订阅者提供服务。
在 路由 阶段,可能会到达一个请求,该请求必须��达订阅者的服务节点(例如 SLg Provide-Location-Request)。模块查找绑定并直接路由到正确的对等方。
如果不存在订阅者的绑定,请求将通过现有的路由逻辑,包括高级路由。
绑定生命周期
学习:创建绑定的消息
模块从以下 Diameter 消息中学习订阅者到服务节点的绑定:
| 接口 | 消息 | 命令码 | 创建的绑定 | IMSI 来源 |
|---|---|---|---|---|
| S6a | Update-Location-Request (ULR) | 316 | serving_mme | User-Name AVP (1) |
| Gx | Credit-Control-Request Initial (CCR-I) | 272 (CC-Request-Type=1) | serving_pgw | Subscription-Id AVP (443) |
| Cx | Server-Assignment-Request (SAR) | 301 (Server-Assignment-Type=1) | serving_cscf | Public-Identity AVP (601) |
学习:移除绑定的消息
| 接口 | 消息 | 命令码 | 移除的绑定 |
|---|---|---|---|
| S6a | Cancel-Location-Request (CLR) | 317 | serving_mme |
| S6a | Purge-UE-Request (PUR) | 321 | serving_mme |
| Gx | Credit-Control-Request Termination (CCR-T) | 272 (CC-Request-Type=3) | serving_pgw |
| Cx | Server-Assignment-Request (SAR) | 301 (Server-Assignment-Type=4) | serving_cscf |
当模块移除订阅者的最后一个绑定时,它会从表中删除整个订阅者记录。
路由:使用绑定的消息
| 接口 | 消息 | 命令码 | 使用的绑定 |
|---|---|---|---|
| SLg | Provide-Location-Request (PLR) | 8388620 | serving_mme |
| SLh | LCS-Routing-Info-Request (RIR) | 8388622 | serving_mme |
DRA 将通过学习到的绑定路由的请求转发到服务节点。它使用来自 diameter.request_timeout 设置的基本转发超时(���参见 Peer Connectivity 或 Configuration)。该模块不为这些路由请求定义自己的超时。
示例流程:位置服务请求
管道位置
订阅者查找在请求处理管道中在高级路由之前运行。如果 SLF 找到绑定并覆盖路由,高级路由仍然会运行。SLF 路由具有优先权。
配置
在 config/runtime.exs 中的 module_subscriber_lookup 下配置该模块。
module_subscriber_lookup: %{
# 启用或禁用模块
enabled: false,
# 绑定过期前保持多长时间(秒)
binding_ttl_seconds: 86400
}
参数
| 参数 | 类型 | 必需 | 默认 | 描述 |
|---|---|---|---|---|
enabled | 布尔值 | 是 | false | 启用或禁用订阅者查找模块。当 false 时,所有请求未经修改地通过,模块不学习任何绑定。 |
children | 列表 | 否 | [] | 启用时 DRA 主管启动的进程。将其设置为 [DRA.Router.Modules.SubscriberLookup] 以便绑定表进程运行。 |
binding_ttl_seconds | 整数 | 否 | 86400 | 订阅者绑定过期前的时间(秒)。清理然后将其移除。默认值为 24 小时。清理在 TTL 间隔的一半运行,最小为 60 秒。 |
配置示例
标准部署
在大多数网络中使用此配置,其中订阅者在 24 小时内重新注册。
module_subscriber_lookup: %{
enabled: true,
binding_ttl_seconds: 86400
}
工作原理: 该模块从通过的流量中学习 MME/PGW/CSCF 绑定,并保持 24 小时。DRA 自动将 SLg 和 SLh 请求路由到正确的服务 MME。每当观察到同一订阅者的新注册消息时,模块会刷新绑定。
用例: 具有位置服务 (LCS) 需求的网络。GMLC 必须在没有静态订阅者到 MME 映射的情况下到达服务 MME。
高流动环境
在频繁移动的订阅者网络中使用此配置。过时的绑定必须快速过期。
module_subscriber_lookup: %{
enabled: true,
binding_ttl_seconds: 3600
}
工作原理: 绑定在 1 小时后过期。当订阅者经常在 MMEs 之间移动时使用此配置。过时的绑定会导致位置请求错误定向。清理间隔每 30 分钟运行。
用例: 密集城市网络或具有高订阅者流动性的事件。
指标
绑定更新
指标: diameter.subscriber_lookup.binding.update
类型: 计数器
描述: DRA 每次创建或更新订阅者绑定时递增此计数器。
标签:
imsi- 订阅者的 IMSIbinding_type- 绑定类型:serving_mme、serving_pgw或serving_cscfserving_host- 服务网络元素的 Origin-Host
绑定删除
指标: diameter.subscriber_lookup.binding.delete
类型: 计数器
描述: DRA 每次注销消息移除订阅者绑定时递增此计数器。
标签:
imsi- 订阅者的 IMSIbinding_type- 移除的绑定类型
路由请求
指标: diameter.subscriber_lookup.route.count
类型: 计数器
描述: DRA 每次使用学习到的绑定路由 SLg/SLh 请求时递增此计数器。
标签:
imsi- 订阅者的 IMSIbinding_type- DRA 用于路由的绑定类型(目前始终为serving_mme)serving_host- DRA 路由请求的对等方的 Origin-Host
故障排除
位置请求未路由到服务 MME
症状: DRA 不会将 SLg Provide-Location-Requests 或 SLh LCS-Routing-Info-Requests 路由到预期的 MME。它们会转到默认路由。
可能的原因:
- 订阅者尚未通过此 DRA 注册,因此不存在绑定。
- 绑定已过期。TTL 超过。
- 服务 MME 对等方未连接到此 DRA。
enabled设置为false。
解决方案:
- 确认模块在配置中已启用。
- 检查订阅者的 S6a ULR 流量是否通过此 DRA。模块仅从观察到的流量中学习绑定。
- 确认
binding_ttl_seconds足够长,以覆盖注册和位置请求之间的间隔。 - 确认服务 MME 作为对等方连接。
绑定未被学习
症状: 尽管 S6a/Gx/Cx 流量通过 DRA,绑定表仍然为空。
可能的原因:
- 模块未启用。
- 模块进程未运行。检查主管。
- 消息未在预期的 AVP 中包含有效的 IMSI。
解决方案:
- 确认配置中
enabled: true。 - 确认 DRA 在配置更改后已重启。
- 检��� DRA 调试日志中的
SubscriberLookup: Learned条目。这些条目确认了绑定活动。
过时的绑定导致请求错误路由
症状: DRA 将位置请求路由到不再为订阅者提供服务的 MME。
可能的原因:
- Cancel-Location-Request (CLR) 或 Purge-UE-Request (PUR) 未通过此 DRA。
binding_ttl_seconds对于网络的流动模式设置得过高。
解决方案:
- 将
binding_ttl_seconds减少到与预期的订阅者重新注册间隔相匹配。 - 确认所有 S6a 注销流量都通过此 DRA。
参考
应用程序 ID
| ID | 接口 | 描述 | 参考 |
|---|---|---|---|
| 16777251 | S6a/S6d | MME/SGSN 到 HSS 的认证和订阅管理 | 3GPP TS 29.272 |
| 16777238 | Gx | PCEF 到 PCRF 的策略和计费控制 | 3GPP TS 29.212 |
| 16777216 | Cx | I-CSCF/S-CSCF 到 HSS 的 IMS 注册 | 3GPP TS 29.229 |
| 16777255 | SLg | GMLC 到 MME 的位置服务 | 3GPP TS 29.172 |
| 16777291 | SLh | GMLC 到 HSS/DRA 的 LCS 路由信息 | 3GPP TS 29.173 |
命令码
| 代码 | 名称 | 接口 | 描述 |
|---|---|---|---|
| 272 | Credit-Control-Request/Answer (CCR/CCA) | Gx | 会话级别的策略和计费控制 |
| 301 | Server-Assignment-Request/Answer (SAR/SAA) | Cx | IMS 注册和注销 |
| 316 | Update-Location-Request/Answer (ULR/ULA) | S6a | 在 MME 处更新订阅者位置 |
| 317 | Cancel-Location-Request/Answer (CLR/CLA) | S6a | HSS 发起的位置取消 |
| 321 | Purge-UE-Request/Answer (PUR/PUA) | S6a | MME 发起的 UE 清除 |
| 8388620 | Provide-Location-Request/Answer (PLR/PLA) | SLg | 向服务 MME 的位置服务请求 |
| 8388622 | LCS-Routing-Info-Request/Answer (RIR/RIA) | SLh | LCS 路由信息查找 |
绑定类型
| 绑定类型 | 来源 | 使用 | 描述 |
|---|---|---|---|
serving_mme | S6a ULR | SLg PLR, SLh RIR | 当前为订阅者提供服务的 MME |
serving_pgw | Gx CCR-I | - | 处理订阅者会话的 PGW(保留用于未来路由) |
serving_cscf | Cx SAR (Registration) | - | 为订阅者的 IMS 注册提供服务的 S-CSCF(保留用于未来路由) |