1

在我看到的所有 Diameter 实现中,来自服务器的消息总是发送到目标主机 AVP 中的 DNS 解析 IP 地址。但是,在商业服务器中,我们看到了一个配置 DRA 或 DEA 的选项,它接收所有消息并路由它们。

因此,当涉及到 mobicents 直径堆栈时,这种方法有时很难做到。无论如何,我都可以重新配置主机文件,以便消息以 DRA/DEA 结尾,但是,这很痛苦。我看不到将这些消息发送给中心直径代理的选项,该代理将为我处理所有肮脏的工作。

下一个问题是,如果我计划创建这样的 DRA/DEA,堆栈不接受发送到不同主机的消息。其中,消息的 Destination-Host 参数可能包含与我们不同的主机名。(这将是它需要去的最终目的地)

有没有办法在不干预 jdiameter 代码和 RA 代码内部的情况下实现这一点?

4

2 回答 2

1

如果您将 jdiameter 的配置更改为以下内容:

<Network>
    <Peers>
      <Peer name="aaa://127.0.0.1:21812" attempt_connect="false" rating="1" />
      <Peer name="aaa://CUSTOM_HOST:4545" attempt_connect="false" rating="1" />
    </Peers>
    <Realms>
      <Realm name="custom.realm" peers="CUSTOM_HOST" local_action="LOCAL" dynamic="false" exp_time="1">
        <ApplicationID>
           ...
        </ApplicationID>
      </Realm>
     </Realms>
 </Network>

在您的 sbb 中,您需要创建一个客户端会话,使用此方法提供您的自定义领域:

DiameterCCAResourceAdaptor.CreditControlProviderImpl.createClientSession(DiameterIdentity destinationHost, DiameterIdentity destinationRealm)

例子:

ccaRaSbb.createClientSession(null, "custom.realm")

ccaRaSbb实例在哪里CreditControlProvider(资源适配器接口)

最后,在创建 CCR 时,该方法CreditControlClientSession.createCreditControlRequest()将使用会话的域来查找先前配置的可用对等点。

让我知道这对你是否有意义

于 2016-01-07T16:40:07.997 回答
0

贴出我用来解决这个问题的方法。

事实证明,它不可能开箱即用地向未在堆栈的 jdiameter-config.xml 文件中配置的对等方发送直径消息。

对我来说,在这种情况下更改堆栈的选项也是不可行的。因此,我通过与我们拥有的 DRA 合作,为该问题设计了一个解决方法。(大多数 DRA 应该能够处理这种方法)

  1. 我在传出请求中添加了两个自定义 AVP,即Ultimate-Destination-HostUltimate-Destination-Realm
  2. 在 DRA 中,我要求管理员删除我的Destination-HostDestination-RealmAVP 并将它们替换为在步骤 1 中创建的那些。

现在,每当我向配置的对等方之外的其他直径对等方发送数据包时,我将它们定位到 DRA 并设置这些“终极”目标 AVP。

我们的 Oracle DSR 能够进行这种 AVP 操作。大多数商业的应该能够处理它。希望想要回答这个问题的人发现这很有用。

于 2020-08-21T07:37:29.973 回答