配置指南
📖 返回主文档
本文档提供TAS应用服务器的全面配置参考。
相关文档
核心配置
集成接口
呼叫处理
增值服务
测试与合规
- 🧪 HLR��呼叫模拟器 - 测试工具
- 📜 ANSSI R226合规性 - 法国市场合规性
配置
应用服务器需要:
- 连接到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访问:
-
自签名证书(开发/测试):
openssl req -x509 -newkey rsa:4096 -keyout priv/cert/server.key \
-out priv/cert/server.crt -days 365 -nodes -
生产证书:
- 使用受信任的证书颁发机构(CA)提供的证书
- 常见提供商:Let's Encrypt(免费)、商业CA
- 确保证书包含完整链以获得浏览器信任
- 使用适当的文件权限(
chmod 600)保持私钥安全
访问控制:
控制面板提供对敏感操作数据的访问:
- 订阅者信息: 注册详情、通话历史、位置
- 呼叫详细记录: 包含MSISDN数据的完整呼叫记录
- 系统配置: Diameter对等体、网关、路由
- 活动呼叫: 实时监控正在进行的会话
推荐的安全措施:
- 在生产环境中部署在防火墙或VPN后面
- 使用来自受信任CA的强TLS证书
- 实施网络级访问控制(IP白名单)
- 如果公开访问,考虑额外的身份验证层
- 定期审核访问日志
- 仅使用HTTPS - 切勿通过普通HTTP提供服务
常见部署模式:
-
仅内部访问:
url: [host: "10.8.82.60", path: "/"] # 仅限内部网络 -
带域名的外部访问:
url: [host: "tas.operator.com", path: "/"]
https: [port: 443, ...] -
在反向代理后面:
url: [host: "tas.internal", path: "/panel"] # Nginx/Apache转发到此
故障排除:
- 证书错误: 验证
keyfile和certfile的路径是否正确且文件可读 - 端口已被使用: 检查是否有其他服务正在使用端口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中很常见
- 示例:
8444,8443,9443
- 默认值:
-
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/HTTPStrue:通过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
常见部署场景:
-
仅内部API:
listen_ip: "127.0.0.1" # 仅限localhost访问
enable_tls: false # 内部测试使用HTTP -
带TLS的生产API:
listen_ip: "0.0.0.0" # 从网络可访问
enable_tls: true # 需要HTTPS
hostname: "api.operator.com" -
开发/测试:
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 - 范围:
5到3600 - 示例:
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,则禁用 - 典型值:
15到60秒 - 在网关状态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}"/>
故障排除网关问题
网关无法注册:
- 验证
username和password是否正确 - 检查
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 - 不得与其他服务冲突
- 标准Diameter端口:
-
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
- 标准3GPP供应商ID:
目标领域配置
destination_realm参数控制包含在Diameter请求中的Destination-Realm AVP。此AVP告诉Diameter路��代理(DRA)将请求路由到哪里。
三层配置:
- 应用程序特定(优先级最高):在每个应用程序配置中设置
destination_realm - 全局:在Diameter配置的顶层设置
destination_realm - 回退(优先级最低):如果上述两者均未配置,则使用
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对等体的状态。

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