如何向Mobicents中的目的地主机值以外的IP发送Diameter消息

时间:2016-01-04 16:39:08

标签: mobicents diameter-protocol jain-slee

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

因此,当涉及到mobicents直径堆栈时,这种方法有时很难做到。无论如何,我可以重新配置hosts文件,以便消息在DRA / DEA中结束,但是,这很痛苦。我认为没有选择将这些消息发送给一个中心直径代理商,它将为我处理所有肮脏的工作。

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

如果不干涉jdiameter代码和RA代码的内部,是否存在实现此目的的黑客攻击?

2 个答案:

答案 0 :(得分: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")

其中ccaRaSbbCreditControlProvider实例(资源适配器接口)

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

如果这对您有意义,请告诉我

答案 1 :(得分:0)

发布我用来解决此问题的方法。

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

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

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

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

我们是Oracle DSR,它能够执行此AVP操作。大多数商业公司应该能够处理它。希望有人想对此问题的答案发现它有用。