跳到主要内容

配置指南

📖 返回主文档

本文档提供TAS应用服务器的全面配置参考。

相关文档

核心配置

集成接口

呼叫处理

增值服务

测试与合规


配置

应用服务器需要:

  • 连接到SIP中继/SBC以进行外部呼叫
  • 连接到DRA或HSS以获取Sh
  • 可选连接到DRA或OCS进行Ro在线计费
  • 拨号计划配置
  • 拨号规则/号码翻译的配置
  • 语音邮件配置
  • 提示
  • 测试
  • 指标(Prometheus)

事件套接字配置

事件套接字用于呼叫控制、监控活动呼叫和与电话引擎交互。此连接允许TAS控制呼叫路由、检索通道变量和管理活动会话。

配置位置: config/runtime.exs

config :tas,
fs_event_socket: %{
host: "127.0.0.1",
port: 8021,
secret: "YourSecretPassword"
}

配置参数:

  • host (字符串,必需):事件套接字服务器的主机名或IP地址

    • 默认值:"127.0.0.1"(本地主机)
    • 如果电话引擎与TAS运行在同一服务器上,请使用localhost
    • 对于分布式部署,请使用远程IP
    • 示例:"10.8.82.60"用于远程连接
  • port (整数,必需):事件套接字连接的TCP端口

    • 默认值:8021
    • 标准事件套接字端口为8021
    • 必须与电话引擎中的事件套接字配置匹配
    • 示例:8021
  • secret (字符串,必需):事件套接字的身份验证密码

    • 必须与电话引擎中配置的密码匹配
    • 用于身份验证ESL连接
    • 安全提示: 使用强随机密码并保持安全
    • 示例:"cd463RZ8qMk9AHMMDGT3V"

用例:

  • 实时呼叫控制和路由
  • 检索活动呼叫信息以供控制面板的/calls视图使用
  • 以编程方式执行拨号计划应用程序
  • 监控呼叫状态变化和事件
  • 管理会议电话

连接行为:

  • TAS建立与事件套接字的持久连接
  • 在连接失败时自动重新连接
  • 用于入站(接收事件)和出站(控制呼叫)模式
  • 连接超时和重试逻辑是内置的

安全考虑:

  • 始终为secret参数使用强大且唯一的密码
  • 如果使用远程连接,请确保防火墙规则仅允许受信任的TAS服务器
  • 考虑在TAS和电话引擎共置时使用仅限localhost的连接
  • 不要将事件套接字端口暴露给公共网络

故障排除:

  • 连接被拒绝: 验证电话引擎是否正在运行并且事件套接字已启用
  • 身份验证失败: 检查secret是否与电话引擎配置匹配
  • 超时错误: 验证网络连接和防火墙规则
  • 无法控制呼叫: 确保TAS已成功连接(检查日志)

控制面板配置

控制面板提供了一个基于Web的界面,用于监控和管理TAS系统。这包括查看订阅者、CDR、活动呼叫、Diameter对等体、网关和系统配置。

配置位置: config/runtime.exs

config :control_panel,
page_order: ["/application", "/configuration"]

config :control_panel, ControlPanelWeb.Endpoint,
url: [host: "0.0.0.0", path: "/"],
https: [
port: 443,
keyfile: "priv/cert/server.key",
certfile: "priv/cert/server.crt"
]

配置参数:

页面顺序配置

  • page_order (字符串列表):控制控制面板中配置页面的显示顺序
    • 指定哪些页面出现在导航中及其顺序
    • 示例:["/application", "/configuration"]
    • 默认:如果未设置,页面按默认字母顺序出现

Web端点配置

  • url (映射):控制面板的公共URL配置

    • host:生成URL的主机名(例如,"tas.example.com""0.0.0.0"
    • path:所有控制面板路由的基本路径(默认:"/"
    • 用于在重定向和链接中生成绝对URL
  • https (映射):用于安全访问的HTTPS/TLS配置

    • port (整数):HTTPS端口号(标准为443
    • keyfile (字符串):TLS私钥文件的路径(PEM格式)
    • certfile (字符串):TLS证书文件的路径(PEM格式)
    • 两个文件必须可被TAS应用程序读取

证书管理:

控制面板需要有效的TLS证书以进行HTTPS访问:

  1. 自签名证书(开发/测试):

    openssl req -x509 -newkey rsa:4096 -keyout priv/cert/server.key \
    -out priv/cert/server.crt -days 365 -nodes
  2. 生产证书:

    • 使用受信任的证书颁发机构(CA)提供的证书
    • 常见提供商:Let's Encrypt(免费)、商业CA
    • 确保证书包含完整链以获得浏览器信任
    • 使用适当的文件权限(chmod 600)保持私钥安全

访问控制:

控制面板提供对敏感操作数据的访问:

  • 订阅者信息: 注册详情、通话历史、位置
  • 呼叫详细记录: 包含MSISDN数据的完整呼叫记录
  • 系统配置: Diameter对等体、网关、路由
  • 活动呼叫: 实时监控正在进行的会话

推荐的安全措施:

  • 在生产环境中部署在防火墙或VPN后面
  • 使用来自受信任CA的强TLS证书
  • 实施网络级访问控制(IP白名单)
  • 如果公开访问,考虑额外的身份验证层
  • 定期审核访问日志
  • 仅使用HTTPS - 切勿通过普通HTTP提供服务

常见部署模式:

  1. 仅内部访问:

    url: [host: "10.8.82.60", path: "/"]  # 仅限内部网络
  2. 带域名的外部访问:

    url: [host: "tas.operator.com", path: "/"]
    https: [port: 443, ...]
  3. 在反向代理后面:

    url: [host: "tas.internal", path: "/panel"]  # Nginx/Apache转发到此

故障排除:

  • 证书错误: 验证keyfilecertfile的路径是否正确且文件可读
  • 端口已被使用: 检查是否有其他服务正在使用端口443,或更改为其他端口
  • 无法访问UI: 验证防火墙规则是否允许访问配置的HTTPS端口
  • SSL握手失败: 确保证书和密钥匹配并且为PEM格式

API配置

TAS包括一个REST API,用于对系统功能、订阅者管理和操作数据进行编程访问。API支持OpenAPI/Swagger文档,并使用TLS进行安全保护。

配置位置: config/runtime.exs

config :api_ex,
api: %{
port: 8444,
listen_ip: "0.0.0.0",
product_name: "OmniTAS",
title: "API - OmniTAS",
hostname: "localhost",
enable_tls: true,
tls_cert_path: "priv/cert/server.crt",
tls_key_path: "priv/cert/server.key"
}

配置参数:

  • port (整数,必需):API服务器的TCP端口

    • 默认值:8444
    • 选择一个不与其他服务冲突的端口
    • 标准HTTPS端口为443,但自定义端口在API中很常见
    • 示例:844484439443
  • listen_ip (字符串,必需):绑定API服务器的IP地址

    • "0.0.0.0":监听所有网络接口(外部访问)
    • "127.0.0.1":仅在localhost上监听(仅限内部访问)
    • 特定IP:绑定到特定接口(例如,"10.8.82.60"
    • 安全性: 如果API仅在内部需要,请使用"127.0.0.1"
  • product_name (字符串):API元数据的产品标识符

    • 用于API响应和文档中
    • 示例:"OmniTAS""MyOperator-IMS"
  • title (字符串):API文档的可读标题

    • 在OpenAPI/Swagger UI头部显示
    • 示例:"API - OmniTAS""IMS应用服务器API"
  • hostname (字符串):API服务器在文档中的主机名

    • 用于OpenAPI规范中生成示例URL
    • 应与客户端访问API的方式匹配
    • 示例:"localhost""api.operator.com""10.8.82.60"
  • enable_tls (布尔):启用或禁用API的TLS/HTTPS

    • true:通过HTTPS提供API(建议用于生产)
    • false:通过HTTP提供API(仅用于测试/开发)
    • 安全性: 在生产环境中始终使用true
  • tls_cert_path (字符串):TLS证书文件的路径(PEM格式)

    • enable_tls: true时必需
    • 必须可被TAS应用程序读取
    • 示例:"priv/cert/server.crt"
  • tls_key_path (字符串):TLS私钥文件的路径(PEM格式)

    • enable_tls: true时必需
    • 必须可被TAS应用程序读取
    • 安全性: 通过文件权限保护(chmod 600
    • 示例:"priv/cert/server.key"

API功能:

REST API提供编程访问:

  • 订阅者管理和配置
  • 呼叫详细记录(CDR)查询
  • 系统状态和健康检查
  • Diameter对等体状态
  • 网关状态和统计信息
  • 活动呼叫监控
  • 配置管理

OpenAPI/Swagger文档:

API包括内置的OpenAPI(Swagger)文档:

  • 访问Swagger UI:https://hostname:port/api/swaggerui
  • OpenAPI JSON规范:https://hostname:port/api/openapi
  • 直接从浏览器进行交互式API测试
  • 完整的端点文档,包括请求/响应模式

安全考虑:

  • 身份验证: 根据安全要求实施API身份验证
  • 网络访问: 使用防火墙规则限制API访问仅限授权客户端
  • TLS要求: 在生产中始终启用TLS(enable_tls: true
  • 证书验证: 使用受信任的证书用于生产API
  • 速率限制: 考虑为面向公众的API实施速率限制
  • 访问日志: 监控API访问日志以发现可疑活动

示例用法:

# 使用curl查询API(替换为实际端点)
curl -k https://localhost:8444/api/health

# 访问Swagger文档
https://localhost:8444/api/swaggerui

常见部署场景:

  1. 仅内部API:

    listen_ip: "127.0.0.1"  # 仅限localhost访问
    enable_tls: false # 内部测试使用HTTP
  2. 带TLS的生产API:

    listen_ip: "0.0.0.0"    # 从网络可访问
    enable_tls: true # 需要HTTPS
    hostname: "api.operator.com"
  3. 开发/测试:

    listen_ip: "0.0.0.0"
    enable_tls: false # 方便测试的HTTP
    port: 8080 # 非特权端口

故障排除:

  • 端口绑定失败: 验证端口未被其他服务占用,或以root身份运行以便使用<1024的端口
  • TLS错误: 检查证书和密钥路径是否正确且文件可读
  • 无法连接: 验证防火墙是否允许访问配置的端口
  • 证书不匹配: 确保hostname与证书的公共名称(CN)或SAN匹配
  • API返回404: 检查API应用程序是否在日志中成功启动

SIP中继配置

Ansible负责为每个外发网关创建XML配置,这些配置在网关选项卡中可见,用于外发呼叫。

CSCF地址和网关地址必须包含在运行时配置中,以便我们知道允许来自哪些IP的呼叫,我们在网关/SBC的allowed_sbc_source_ips(将MT流量发送到网络的源)和CSCF的allowed_cscf_ips(MO流量的来源)中进行配置。

注意 - 如果您将呼叫从TAS路由到自身(即,MO呼叫到网内订阅者路由回MT拨号计划),则您的TAS IP也必须在允许的源IP列表中。

config :tas,
allowed_sbc_source_ips: ["10.5.198.200", "103.26.174.36"],
allowed_cscf_ips: ["10.8.3.34"],

从Web UI中,我们可以查看每个网关的状态,以及:

  • SIP注册状态(如果启用了注册)
  • SIP领域
  • SIP代理地址(如果使用)
  • 用户名
  • Ping时间(平均SIP OPTIONs响应时间(如果启用SIP OPTIONs))
  • 正在运行时间(自配置文件重新启动或启动以来的秒数)
  • 呼入呼叫/呼出呼叫/呼入失败呼叫/呼出失败呼叫
  • 上次SIP OPTIONs ping时间(纪元)
  • SIP OPTIONs ping频率
  • 在__详细__按钮中获取更多信息

网关视图

网关配置参考

网关以XML格式配置。每个网关表示与外部SBC、运营商或PSTN网关的SIP中继连接。

基本网关示例:

<include>
<gateway name="carrier_trunk">
<param name="proxy" value="203.0.113.50;transport=tcp"/>
<param name="register" value="true"/>
<param name="caller-id-in-from" value="true"/>
<param name="username" value="trunk_user"/>
<param name="password" value="secure_password"/>
<param name="register-transport" value="tcp"/>
<param name="retry-seconds" value="30"/>
<param name="ping" value="25"/>
</gateway>
</include>

没有注册的网关:

<include>
<gateway name="sbc_static">
<param name="proxy" value="198.51.100.10"/>
<param name="register" value="false"/>
<param name="caller-id-in-from" value="true"/>
</gateway>
</include>

网关参数

必需参数

name (网关属性)

  • 此网关的唯一名称标识符
  • 用于拨号计划中引用网关:sofia/gateway/name/destination
  • 示例:<gateway name="my_trunk">

proxy

  • SIP代理/网关的IP地址或主机名
  • 可以包括端口和传输协议
  • 示例:
    • value="203.0.113.50"(默认端口5060,UDP)
    • value="203.0.113.50:5061"(自定义端口)
    • value="203.0.113.50;transport=tcp"(TCP传输)
    • value="203.0.113.50:5061;transport=tls"(TLS在端口5061上)

register

  • 是否向网关发送SIP注册
  • 值:true | false
  • 如果中继需要注册,则设置为true
  • 对于基于静态IP的中继,设置为false
身份验证参数

username

  • SIP身份验证用户名
  • 在注册和摘要身份验证中使用
  • 如果register="true",则为必需
  • 示例:value="trunk_account_123"

password

  • SIP身份验证密码
  • 用于摘要身份验证挑战
  • 如果register="true",则为必需
  • 示例:value="MySecureP@ssw0rd"

realm

  • SIP身份验证领域
  • 可选 - 通常从挑战中自动检测
  • 示例:value="sip.carrier.com"

auth-username

  • 用于身份验证的替代用户名(如果与username不同)
  • 很少需要 - 仅在运营商要求身份验证与From头不同的用户时
  • 示例:value="auth_user_456"
注册参数

register-transport

  • 注册消息的传输协议
  • 值:udp | tcp | tls
  • 必须与proxy参数中指定的传输匹配
  • 示例:value="tcp"

register-proxy

  • 注册的替代代理地址(如果与呼叫路由不同)
  • 当注册服务器与呼叫路由服务器不同时时很有用
  • 示例:value="register.carrier.com:5060"

retry-seconds

  • 在重试失败的注册之前等待的秒数
  • 默认值:30
  • 范围:53600
  • 示例:value="30"

expire-seconds

  • 注册过期时间(��秒为单位)
  • 默认值:3600(1小时)
  • 网关将在过期之前重新注册
  • 示例:value="1800"(30分钟)

caller-id-in-from

  • 在SIP From头中包含来电号码
  • 值:true | false
  • true:From头包含实际来电号码(大多数运营商要求)
  • false:From头使用网关用户名
  • 建议: 对于大多数部署,设置为true
  • 示例:value="true"
监控参数

ping

  • 每N秒发送SIP OPTIONS ping
  • 监控网关可用性并测量延迟
  • 如果未指定或设置为0,则禁用
  • 典型值:1560
  • 在网关状态UI中显示为“Ping时间”
  • 示例:value="25"

ping-max

  • 在标记网关为故障之前重试ping的最大时间(秒)
  • 默认值:根据ping间隔计算
  • 示例:value="3"
呼叫路由参数

extension

  • 始终在此网关拨打的固定目标号码
  • 很少使用 - 通常目标来自拨号计划
  • 示例:value="+12125551234"

extension-in-contact

  • 在Contact头中包含扩展
  • 值:true | false
  • 默认值:false
  • 示例:value="false"

contact-params

  • 附加参数附加到Contact头
  • 对于运营商特定要求很有用
  • 示例:value="line=1;isup=true"
高级参数

from-user

  • 在From头中覆盖���户名
  • 默认值:使用呼叫号码或网关用户名
  • 示例:value="trunk_pilot"

from-domain

  • 在From头中覆盖域
  • 默认值:使用代理域
  • 示例:value="my-domain.com"

outbound-proxy

  • 所有SIP消息的出站代理
  • proxy不同 - 用作Route头目标
  • 示例:value="edge-proxy.carrier.com:5060"

context

  • 从此网关接收的来电的拨号计划上下文
  • 默认值:public
  • 允许每个网关不同的来电路由
  • 示例:value="from-carrier"

channels

  • 此网关上的最大并发呼叫数
  • 默认值:无限制
  • 用于容量管理
  • 示例:value="100"

dtmf-type

  • DTMF传输方法
  • 值:rfc2833 | info | inband | auto
  • 默认值:rfc2833(推荐)
  • rfc2833:RTP电话事件(最常见)
  • info:SIP INFO消息
  • inband:音频音调
  • 示例:value="rfc2833"

rtp-timeout-sec

  • 如果在N秒内未收到RTP,则挂断呼叫
  • 默认值:0(禁用)
  • 对于检测死呼叫很有用
  • 示例:value="120"

rtp-hold-timeout-sec

  • 在无RTP的情况下保持呼叫的超时
  • 默认值:0(禁用)
  • 示例:value="1800"(30分钟)
SIP信令选项

sip-port

  • 此网关使用的本地SIP端口
  • 默认值:配置文件的端口
  • 很少需要
  • 示例:value="5060"

rtp-ip

  • RTP媒体的本地IP地址
  • 默认值:配置文件的RTP IP
  • 示例:value="10.0.0.5"

register-proxy-port

  • 注册代理的端口
  • 仅在与代理端口不同的情况下需要
  • 示例:value="5061"

contact-host

  • 覆盖Contact头的主机部分
  • 对于NAT场景很有用
  • 示例:value="public-ip.example.com"

distinct-to

  • 使用不同于请求URI的不同To头
  • 值:true | false
  • 运营商特定要求
  • 示例:value="false"

cid-type

  • 在Remote-Party-ID或P-Asserted-Identity头中的来电号码类型
  • 值:rpid | pid | none
  • rpid:Remote-Party-ID头
  • pid:P-Asserted-Identity头
  • 示例:value="pid"

extension-in-contact

  • 将扩展参数添加到Contact URI
  • 值:true | false
  • 示例:value="true"
传输安全

transport (在代理参数中)

  • 传输协议
  • 值:udp | tcp | tls | ws | wss
  • 作为代理值的一部分指定
  • 示例:proxy="203.0.113.50;transport=tcp"

对于TLS连接,可能需要在SIP配置文件中进行额外的证书配置。

完整示例与常见选项

<include>
<gateway name="primary_carrier">
<!-- 必需:基本连接 -->
<param name="proxy" value="sbc.carrier.com:5060;transport=tcp"/>
<param name="register" value="true"/>

<!-- 身份验证 -->
<param name="username" value="customer_trunk_01"/>
<param name="password" value="SecurePassword123"/>

<!-- 注册 -->
<param name="register-transport" value="tcp"/>
<param name="expire-seconds" value="1800"/>
<param name="retry-seconds" value="30"/>

<!-- 来电号码 -->
<param name="caller-id-in-from" value="true"/>

<!-- 监控 -->
<param name="ping" value="30"/>

<!-- 媒体 -->
<param name="codec-prefs" value="PCMU,PCMA,G729"/>
<param name="dtmf-type" value="rfc2833"/>

<!-- 呼叫限制 -->
<param name="channels" value="100"/>

<!-- RTP超时 -->
<param name="rtp-timeout-sec" value="300"/>
</gateway>
</include>

在拨号计划中的网关使用

在拨号计划中使用sofia/gateway/name/destination格式引用网关:

<!-- 路由到特定网关 -->
<action application="bridge" data="sofia/gateway/primary_carrier/+12125551234"/>

<!-- 使用变量路由 -->
<action application="bridge" data="sofia/gateway/primary_carrier/${tas_destination_number}"/>

<!-- 带有自定义SIP头的路由 -->
<action application="bridge" data="{sip_h_X-Custom=Value}sofia/gateway/primary_carrier/${tas_destination_number}"/>

<!-- 在网关之间故障转移 -->
<action application="bridge" data="sofia/gateway/primary_carrier/${tas_destination_number}|sofia/gateway/backup_carrier/${tas_destination_number}"/>

故障排除网关问题

网关无法注册:

  • 验证usernamepassword是否正确
  • 检查proxy地址是否可达
  • 确认register-transport是否符合运营商要求
  • 查看日志以获取身份验证失败的详细信息

呼叫失败:

  • 检查Web UI中的网关状态(/gw
  • 验证caller-id-in-from设置是否符合运营商要求
  • 确认与codec-prefs的编解码器兼容性
  • 检查防火墙是否允许SIP和RTP流量

通话质量差:

  • 查看网关状态中的ping时间
  • 检查rtp-timeout-sec是否过于激进
  • 验证编解码器偏好是否符合网络能力
  • 监控网络延迟和丢包率

Diameter对等体配置

Diameter对等体必须在运行时配置中定义。

此配置大部分是样板。

如果在您的部署中不使用Ro接口,则不需要在应用程序中包含Ro。

config :diameter_ex,
diameter: %{
service_name: :omnitouch_tas,
listen_ip: "10.8.82.60",
listen_port: 3868,
decode_format: :map,
host: "example-dc01-as01",
realm: "epc.mnc001.mcc001.3gppnetwork.org",
product_name: "OmniTAS",
request_timeout: 5000,
peer_selection_algorithm: :random,
allow_undefined_peers_to_connect: true,
log_unauthorized_peer_connection_attempts: true,
control_module: Tas.Control.Diameter,
processor_module: DiameterEx.Processor,
auth_application_ids: [],
acct_application_ids: [],
vendor_id: 10415,
supported_vendor_ids: [10415],
# 可选:所有应用程序的全局destination_realm
# destination_realm: "global.destination.realm",
applications: [
%{
application_name: :sh,
application_dictionary: :diameter_gen_3gpp_sh,
# 可选:Sh请求的应用程序特定destination_realm
# destination_realm: "sh.destination.realm",
vendor_specific_application_ids: [
%{
vendor_id: 10415,
auth_application_id: 16_777_217,
acct_application_id: nil
}
]
},
%{
application_name: :ro,
application_dictionary: :diameter_gen_3gpp_ro,
# 可选:Ro请求的应用程序特定destination_realm
# destination_realm: "ocs.destination.realm",
vendor_specific_application_ids: [
%{
vendor_id: 0,
auth_application_id: 4,
acct_application_id: nil
}
]
}
],
peers: [
%{
port: 3868,
host: "example-dc01-dra01.epc.mnc001.mcc001.3gppnetwork.org",
ip: "1.2.3.4",
realm: "epc.mnc001.mcc001.3gppnetwork.org",
tls: false,
transport: :diameter_tcp,
initiate_connection: true
},
%{
port: 3869,
host: "example-dc01-dra02.epc.mnc001.mcc001.3gppnetwork.org",
ip: "1.2.3.44",
realm: "epc.mnc001.mcc001.3gppnetwork.org",
tls: false,
transport: :diameter_tcp,
initiate_connection: true
}
]
}

Diameter配置参数

服务配置:

  • service_name (原子):此Diameter服务实例的唯一标识符

    • 示例::omnitouch_tas
    • 内部用于服务管理
  • listen_ip (字符串):绑定Diameter连接的IP地址

    • 示例:"10.8.82.60"
    • 使用"0.0.0.0"��所有接口上监听
    • 对等体将连接到此IP
  • listen_port (整数):Diameter连接的TCP端口

    • 标准Diameter端口:3868
    • 不得与其他服务冲突
  • host (字符串):Diameter主机身份(不带领域)

    • 示例:"example-dc01-as01"
    • realm结合形成Origin-Host AVP
    • 在Diameter网络中必须唯一
  • realm (字符串):Diameter领域身份

    • 示例:"epc.mnc001.mcc001.3gppnetwork.org"
    • 用于Origin-Realm AVP
    • 必须符合3GPP网络标识符约定
  • product_name (字符串):CER/CEA消息中的产品标识符

    • 示例:"OmniTAS"
    • 用于能力交换消息中
  • request_timeout (整数):Diameter请求的超时时间(以毫秒为单位)

    • 示例:5000(5秒)
    • 在此时间内未响应的请求将超时
  • peer_selection_algorithm (原子):在多个可用对等体时选择对等体的算法

    • 值::random | :round_robin | :priority
    • :random:随机选择对等体
    • :round_robin:均匀分配请求到对等体
  • vendor_id (整数):3GPP供应商ID

    • 标准3GPP供应商ID:10415
    • 用于Vendor-Specific-Application-Id AVP

目标领域配置

destination_realm参数控制包含在Diameter请求中的Destination-Realm AVP。此AVP告诉Diameter路��代理(DRA)将请求路由到哪里。

三层配置:

  1. 应用程序特定(优先级最高):在每个应用程序配置中设置destination_realm
  2. 全局:在Diameter配置的顶层设置destination_realm
  3. 回退(优先级最低):如果上述两者均未配置,则使用realm

配置示例:

# 示例1:应用程序特定的目标领域
config :diameter_ex,
diameter: %{
realm: "epc.mnc001.mcc001.3gppnetwork.org",
applications: [
%{
application_name: :sh,
destination_realm: "hss.epc.mnc001.mcc001.3gppnetwork.org",
# ... 其他配置
},
%{
application_name: :ro,
destination_realm: "ocs.epc.mnc001.mcc001.3gppnetwork.org",
# ... 其他配置
}
]
}

# 示例2:全局目标领域与应用程序特定覆盖
config :diameter_ex,
diameter: %{
realm: "epc.mnc001.mcc001.3gppnetwork.org",
destination_realm: "dra.epc.mnc001.mcc001.3gppnetwork.org", # 所有应用程序的默认值
applications: [
%{
application_name: :sh,
# 将使用全局值:"dra.epc.mnc001.mcc001.3gppnetwork.org"
},
%{
application_name: :ro,
destination_realm: "ocs.epc.mnc001.mcc001.3gppnetwork.org", # 覆盖
}
]
}

# 示例3:未配置目标领域(使用领域)
config :diameter_ex,
diameter: %{
realm: "epc.mnc001.mcc001.3gppnetwork.org",
# 未在任何地方指定目标领域
applications: [
%{
application_name: :sh,
# 将使用领域回退:"epc.mnc001.mcc001.3gppnetwork.org"
}
]
}

何时使用目标领域:

  • 不同的后端系统:当Sh请求发送到HSS而Ro请求发送到OCS在不同领域时
  • DRA路由:当DRA使用Destination-Realm将请求路由到不同的后端集群时
  • 多租户部署:将不同的应用程序路由到不同的租户领域
  • 测试场景:为应用程序覆盖目标领域以进行测试,而无需更改对等体

回退层次结构:

应用程序特定的destination_realm
↓ (如果未设置)
全局destination_realm
↓ (如果未设置)
realm

这确保Destination-Realm AVP在传出请求中始终存在。

您可以从Web UI的__Diameter__选项卡检查Diameter对等体的状态。

Diameter对等体视图

您还可以从Web UI的__Sh__选项卡测试检索Sh数据,以尝试从Sh获取任何数据。

Sh数据测试