2016-01-04 9 views
1

Во всех реализациях Diameter, которые я видел, сообщения, исходящие с сервера, всегда отправляются на IP-адрес, разрешенный DNS, в том, что происходит в Destination-Host AVP. Но на коммерческих серверах мы видим возможность настройки DRA или DEA, которая принимает все сообщения и направляет их.Как отправить сообщение Diameter на IP-адрес, отличный от значения Destination-Host в мобильном телефоне

Таким образом, когда дело доходит до стека уровней подвижности, этот подход иногда бывает затруднен. Я могу в любом случае переконфигурировать файл hosts, чтобы сообщение попало в DRA/DEA, но его боль. Я не вижу возможности отправить эти сообщения агенту центрального диаметра, который позаботится обо мне всю грязную работу.

Следующая проблема: если я планирую создать такой DRA/DEA, стек не принимает сообщения другому хосту. Где параметр Destination-Host сообщения может содержать другое имя хоста, кроме нашего. (который будет конечным пунктом назначения, в котором он должен идти)

Есть ли взломать это, не вмешиваясь с внутренностями кода jdiameter и кода RA?

+0

Какие интерфейсы интерфейса вы используете? Версии? – delephin

+0

jdiameter последние из github и Credit Control RA 2.8.0. Если это возможно, я запустил любую версию :) –

+0

Кто создает CCR? У вас есть sbb, создающий их? – delephin

ответ

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() будет использовать область сеанса, чтобы найти доступный ранее настроенный узел.

Дайте мне знать, если это имеет значение для вас