Как отправить сообщение Diameter на IP-адрес, отличный от значения Destination-Host в мобикентах?

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

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

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

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

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() будет использовать область сеанса для поиска доступного ранее настроенного партнера.

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

Размещаю метод, который я использовал для решения этой проблемы.

Как оказалось, из коробки невозможно отправить сообщение диаметра одноранговому узлу, который не настроен в файле jdiameter-config.xml стека.

Для меня вариант изменить стек в этом случае также был невозможен. Поэтому я разработал обходной путь для этой проблемы, сотрудничая с DRA, который у нас есть. (большинство DRA должны уметь обрабатывать этот метод)

  1. В исходящий запрос я добавил две кастомные AVP, а именно Ultimate-Destination-Host а также Ultimate-Destination-Realm.
  2. В DRA я попросил админа удалить мой Destination-Host а также Destination-Realm AVP и замените их на созданные на шаге 1.

Теперь, когда я отправляю пакет, предназначенный другим одноранговым узлам диаметра за пределами настроенного однорангового узла, я нацеливаю их на DRA и устанавливаю эти AVP назначения "Ultimate".

У нас есть Oracle DSR, который способен выполнять эти манипуляции с AVP. Большинство коммерческих должны справиться с этим. Надеюсь, кто-то, кто хотел получить ответ на этот вопрос, нашел это полезным.

Другие вопросы по тегам