Маршрутизация телефонных звонков

Маршрутизирующий прокси-сервер для звонков на номера экстренных служб.

Задача

Создание маршрутизирующего прокси-сервера для телефонных звонков на номера экстренных служб для компании RedSky Technologies, Inc. Сервер должен принимать входящий звонок, эмулируя один или несколько кол-центров экстренных служб, определять положение звонившего, используя основной или один из резервных серверов LIS, и перенаправлять звонок на ближайший к абоненту или наименее загруженный кол-центр – в зависимости от текущего набора правил маршрутизации.

Такой прокси-сервер, в соответствии со стандартом NENA (Национальная ассоциация провайдеров номеров экстренных служб), является частью архитектуры Emergency Services IP Network (ESInet).

Решение

Технологии
Java
JBoss Application Server
PostgreSQL
Mobicents
SIP
LIS
LoST
Corosync
Pacemaker
DRBD
Google Web Toolkit
Функциональные возможности решения
1
Надёжность и скорость

Одной из основных задач было обеспечить масштабируемость сервера и возможность маршрутизировать входящие SIP-звонки с минимальной задержкой, независимо от их количества и частоты. Для этого приложение было спроектировано с возможностью развёртывания в отказоустойчивом кластерном окружении, работающем под управлением Corosync и DRBD. Распределение входящей нагрузки между параллельно работающими узлами кластера JBoss гарантирует малое время отклика и равномерную загруженность инфраструктуры. Репликация раздела с данными средствами DRBD на системном уровне обеспечивает высокую надёжность хранения как настроек приложения, так и логов аудита всех обрабатываемых звонков.

2
Конфигурируемость

Сервер должен был обеспечивать настройку правил маршрутизации и обработки входящих звонков, а также редактирование списка серверов, на которые перенаправляются входящие звонки, и списка серверов, определяющих положение абонента. Для этого была разработана консоль управления, оформленная как веб-приложение и развёрнутая на том же кластере JBoss, что и основное приложение маршрутизатора. В консоли предусмотрено несколько уровней доступа, в зависимости от роли пользователя. Права доступа и идентичность пользователя определяются по сертификату, устанавливаемому в клиентский браузер. Пользовательский интерфейс был выполнен на GWT.

3
Гибкость и универсальность

В ходе выполнения проекта клиент рассматривал различные варианты развёртывания приложения для тестирования и «боевого» использования. В результате изменились требования к операционной системе, на основе которой строилось решение. Поскольку при начальном проектировании мы старались максимально отвязать решение как от физической инфраструктуры, так и от особенностей операционных систем, переход с Debian на CentOS прошёл без неожиданностей и достаточно быстро.

Мы найдем лучшее решение вашей задачи