Главным элементом системы ECSS-10 является программное обеспечение (далее ПО). ПО состоит из кластеров, выполняющих различные функции. Каждый кластер включает в себя одну или несколько нод. Прикладное программное обеспечение является полностью переносимым, что позволяет использовать любую операционную систему, как семейства Unix/Linux, так и серверные OC от Microsoft, а также использовать широкий спектр аппаратных архитектур, не ограничиваясь серверными платформами Intel/AMD, например, ОС Эльбрус/МЦСТ.

В настоящий момент в системе ECSS-10 используется операционная система с открытым исходным кодом Ubuntu Server.  Переносимость, высокая надежность и эффективность ПО обеспечиваются:

  • использованием при разработке ПО открытого специализированного функционального языка программирования Erlang и большого набора программных библиотек OTP (Open Telecom Platform);
  • модульностью ПО;
  • функциональной изолированностью модулей;
  • согласованностью межмодульных интерфейсов;
  • использованием модульного и системного тестирования как ПО, так и всей системы ECSS-10, встроенного в процесс разработки;
  • высоким уровнем квалификации и инженерной культуры разработки.

В состав ПО системы ECSS-10 входят следующие типы кластеров, рисунок 1:

  • Storage – обеспечивает хранение долговременных данных (конфигурации);
  • BUS – интеграционная шина, обеспечивает надежную передачу сообщений между подсистемами;
  • Core – осуществляет управление вызовом, маршрутизацию телефонных вызовов и управление предоставлением услуг, собирает тарификационные данные об обслуженных вызовах и взаимодействует с посредником СОРМ;
  • Adapter (Protocol adapter - PA) – адаптирует определенный сигнальный протокол к внутреннему протоколу сигнализации ECSS-10;
  • Mediator – обеспечивает функции управления системой ECSS-10, предоставление статистической информации и аварийной сигнализации;


Рисунок 1 - Функциональный состав ПО системы ECSS-10

Кластер BUS

Одной из важных особенностей ECSS-10 является осуществление взаимодействия между программными компонентами комплекса через интеграционную шину – BUS.

Кластер BUS построен на базе сервера обмена сообщениями (брокера) собственной разработки Mycelium, который поддерживает функционал очередей сообщений и транзакционный механизм обмена. Взаимодействие с клиентами осуществляется по протоколу AMQP (Advanced Message Queuing Protocol) версии 0-10.

При отправке клиентом сообщения на брокер в качестве пункта назначения указывается адрес точки обмена (exchange) на брокере, который представляет собой строку определенной структуры. Точка обмена представляет собой механизм маршрутизации сообщений, который позволяет направить поступающие в точку обмена сообщения в одну или несколько очередей по правилам, регламентированным протоколом AMQP. Далее из точки обмена сообщение попадает в очередь, из которой отправляется клиентам, подписанным на сообщения очереди.
Транзакционность отправки, поддерживаемая брокером, позволяет гарантировать то, что сообщение будет отправлено на брокер, пройдет механизм маршрутизации и поступит в одну или несколько очередей, а значит, не будет потеряно. Если в процессе отправки сообщения происходит ошибка, то клиент об этом незамедлительно информируется.

Для получения сообщения от брокера клиент должен подписаться на определенную очередь. Когда на сообщения одной и той же очереди подписаны несколько клиентов, доставка их осуществляется в режиме равномерного распределения сообщений между клиентами (round-robin). Эта возможность позволяет реализовать в системе режим разделения нагрузки между нодами кластера.
Транзакционность доставки, поддерживаемая брокером, позволяет гарантировать то, что сообщение будет доставлено клиенту. При отказе клиента или ошибке доставки производится повторная доставка сообщения другому клиенту, подписанному на данную очередь.
Взаимодействие через интеграционную шину обеспечивает унификацию механизмов взаимодействия, слабую связанность между подсистемами и позволяет повысить надежность доставки.

Режим разделения нагрузки при доставке сообщения клиенту используется для реализации в ECSS-10 резервирования «active-active». При такой схеме резерва все компоненты находятся в активном состоянии и обслуживают поступающую нагрузку в режиме разделения нагрузки. Конфигурационная информация и операционные данные системы синхронизируются между зарезервированными элементами. Если из строя выйдет какой-либо программный компонент, то за счет механизмов BUS вся поступившая на программный компонент нагрузка (все сообщения) будет считаться не обслуженной, и произойдет её повторная доставка на однотипный резервирующий программный компонент (другую ноду того же кластера), который осуществит обработку данной нагрузки. В случае выхода из строя аппаратной части (хоста) произойдет полное переключение обработки текущей и вновь поступающей нагрузки на оставшиеся в работе компоненты системы (ноды находящиеся на другом хосте). При восстановлении работоспособности вышедшего из строя компонента происходит его регистрация в системе и подписка на требуемые для его работы потоки информации (очереди), что приводит к началу поступления на него сообщений — компонент встает в работу.

Кластер Storage

Кластер Storage выполняет функцию распределенного хранилища конфигурационных данных всей системы. Также в рамках этой подсистемы реализован модуль маршрутизации телефонных вызовов, обладающий высокой производительностью.
Storage использует для хранения конфигурационных данных документо-ориентированной базы данных Mnesia, которая является частью комплекта библиотек OTP (Open Telecom Platform), поставляемых вместе с Erlang. Кластер обеспечивает зеркалирование хранимой в БД информации между всеми нодами кластера. Зеркалирование обеспечивается транзакционными механизмами Mnesia - внесение изменений в данные считается выполненным, если подтверждение о применении этих изменений приходит со всех нод кластера.
В системе должен быть один кластер Storage.

Storage хранит в себе следующую информацию о конфигурации и текущем состоянии системы:

  • топология кластеров системы ECSS-10, описывающая имена, роли и ноды кластеров;
  • индивидуальные параметры каждого кластера;
  • конфигурационная информация по виртуальным АТС, их абонентам и телефонной маршрутизации;
  • конфигурационная информация по интерфейсам (описание транковых и абонентских портов, подключенных к системе);
  • оперативная информация о состоянии интерфейсов;
  • скрипты IVR.

В процессе работы системы кластер Storage взаимодействует со всеми остальными кластерами системы ECSS-10 для выдачи им конфигурационных и оперативных данных, а также сохранения изменений в этих данных.

Кластер Core

Кластер Core реализует логику управления обработкой телефонных вызовов (функции Call Control) и предоставления услуг. Алгоритм обслуживания вызовов реализован с использованием эталонных конечных автоматов O-BCSM и T-BCSM модели реализации интеллектуальных сетей связи (IN) с набором возможностей CS-3 согласно Рекомендации ITU-T Q.1238. Такой подход позволяет регулировать стандартный процесс обслуживания вызова и реализовывать различные услуги.
Реализация услуг выполнена в виде отдельных загружаемых модулей, что дает возможность расширять набор поддерживаемых сервисов и формировать различные пакеты дополнительных услуг для каждого оператора.
В правильно настроенной системе должен быть минимум один кластер Core (в высоконагруженных системах может быть несколько кластеров). Ноды кластера Core работают в режиме разделения нагрузки, обслуживая поступающие вызовы. Данные об обслуживаемых в каждый момент вызовах синхронизируются между нодами кластера, что позволяет незаметно для абонента перевести обслуживание вызова с одной ноды кластера на другую. Это может потребоваться в ситуациях отказа ноды в обслуживании, выходе из строя хоста или при выводе хоста или ноды из работы для проведения работ по их обслуживанию.

Сервис TTS реализует функционал сбора данных о вызовах и формирование файлов с записями о разговорах CDR (Call Detail Record). TTS поддерживает различные режимы сохранения CDR с возможностью адаптации информации в CDR и формата файла под определенного заказчика. Сервис TTS обеспечивает кластерное сохранение CDR, когда файлы с данными о вызовах записываются одновременно на всех нодах кластера.

В процессе работы системы кластер Core взаимодействует со всеми остальными кластерами системы ECSS-10 следующим образом:

  • BUS - посредством интеграционной шины передаются сообщения для других подсистем;
  • Storage - запросы на получение конфигурационных данных, отправка запросов на выполнение телефонной маршрутизации;
  • Adapter - обмен сообщения по внутрисистемному сигнальному протоколу (ACP), обеспечивающему обработку вызова и услуг;
  • Mediator - передача информации об обслуженных вызовах для формирования статистики, отправка уведомления об обнаруженных авариях.

Кластер Adapter

Кластер Adapter осуществляет адаптацию сетевого сигнального протокола, по которому подключаются внешние по отношению к гибкому коммутатору системы и оборудование, к внутреннему сигнальному протоколу системы (ACP).
В настоящее время реализованы следующие адаптеры протоколов:

  • PA Megaco – кластер взаимодействия со шлюзами, работающими по протоколу H.248/Megaco;
  • PA SIP/SIP-T/SIP-I – кластер взаимодействия со шлюзами, периферийным оборудованием и другими гибкими коммутаторами по протоколам SIP и SIP-T/SIP-I;
  • PA Sigtran – кластер взаимодействия со шлюзами, работающими по стеку протоколов Sigtran (M2UA, M3UA, IUA);
  • PA MGCP – кластер взаимодействия со шлюзами, работающими по протоколу MGCP.

Кластер Adapter состоит из одной или нескольких нод, работающих в режиме разделения нагрузки и синхронизирующих оперативные данные процесса обслуживания вызовов между собой. Такая структура позволяет обрабатывать ситуации принудительного или произвольного отказа в обслуживании ноды с автоматическим переводом обслуживания вызовов на другие ноды кластера.
Также Adapter отрабатывает ситуации отказа сети передачи данных (выход из строя сетевого адаптера, коммутатора, патч-корда и т.п.), приводящие к невозможности обмена пакетами.
В Adapter'е реализована виртуализация сетевого адреса, по которому осуществляется обмен сигнальными пакетами целевого сигнального протокола. Использование виртуализации позволяет резервировать IP-адрес системы ECSS-10, который используется при обмене с шлюзами и абонентским оборудованием. Для виртуализации сетевого адреса используется реализация протокола VRRP, выполненная в сервисе keepalived ОС Linux.
В правильно настроенной системе должно быть как минимум по одному кластеру Adapter'a для каждого протокола, используемого при подключении шлюзов и абонентов к системе.

В процессе работы системы кластер Adapter взаимодействует с другими кластерами системы ECSS-10 следующим образом:

  • BUS - используется для обмена сообщениями с другими подсистемами;
  • Storage - запросы на получение конфигурационных данных, обновление оперативных данных о состояниях интерфейсов;
  • Core - обмен сигнальными сообщениями протокола ACP в ходе обслуживания вызовов и предоставления услуг;
  • Mediator - передача информации о попытках занятия и релизах для формирования статистики, а также информация об обнаруженных авариях.

Кластер Mediator

Кластер Mediator реализует:

  • функции накопления статистической информации об обслуженной нагрузке, которая отправляется PA, и формирования периодических статистических отчетов согласно требованиям Рекомендаций ITU-T E.502 и Q.752;
  • сбор информации об авариях, обнаруженных в системе, и выдачу этой информации по протоколу SNMP на внешние системы мониторинга и управления сетью;
  • интерфейс взаимодействия на Web-сервисах, обеспечивающий возможность подключения таких внешних, по отношения к системе ECSS-10, как Web-конфигуратор SSW, биллинговые системы, "Портал абонента", OSS/BSS.

Как и другие подсистемы ECSS-10 кластер Mediator обеспечивает резервирование своих данных (данные о статистике и обнаруженных авариях). Резервирование данных осуществляется посредством механизмов распределённых транзакций БД Mnesia, в которой они хранятся. Поэтому отказ в обслуживании ноды или хоста, на котором запущена нода, не приводит к их потере.
В правильно настроенной системе должен быть один кластер Mediator.

В процессе работы системы кластер Mediator взаимодействует с другими кластерами ECSS-10 следующим образом:

  • BUS - используется для обмена сообщениями с другими подсистемами;
  • Storage - запросы на получение конфигурационных данных;
  • Core - получение данных об обслуженных вызовах для формирования статистики, получение уведомлений об авариях;
  • Adapter - получение данных о попытках занятия и разъединениях для формирования статистики, получение уведомлений об авариях.