Начальная настройка конфигурации
В данном разделе приведено описание этапов первоначальной настройки ECSS перед проверкой базового функционала.
Понятия и определения
- Алиас — совокупность данных об абоненте;
- Бридж — виртуальный шлюз, объединяющий связь между виртуальными АТС. Понятие «бридж» было введено для создания средств контроля соединениями между виртуальными АТС. Вызовы между виртуальными АТС одной системы ECSS-10 маршрутизируются в рамках данной системы через бридж. При этом не задействованы межстанционные соединительные линии. Бридж представлен в виде двух связанных друг с другом интерфейсов. Каждый интерфейс декларирован в своей виртуальной АТС. Для бриджа, как и для классического транка, могут быть заданы различные типы ограничений, например, количество каналов, что дает ограничение на количество одновременно установленных соединений между виртуальными АТС и позволяет нормировать нагрузку;
- Домен (виртуальная АТС) — совокупность, состоящая из множества контекстов маршрутизации, интерфейсов и алиасов. Ближайший эквивалент — описание плана нумерации и маршрутизации в рамках классической телефонной станции для традиционных сетей;
- Кластер — совокупность элементов одного типа, выполняющих, с точки зрения системы, единую функцию. С их помощью описывается вычислительная топология системы. В нашей системе элементом кластера является нода. Кластер существует до тех пор, пока в его состав входит хотя бы одна нода;
- Медиаресурсы — описание параметров медиасервера, необходимых для работы с ним;
- Медиасервер (MSR) — компонент системы ECSS-10, предназначенный для прокcирования речевой и видеоинформации по протоколу RTP, организации конференций, записи разговоров, воспроизведения медиафайлов и различных комбинаций этих режимов. Управление ресурсами медиасервера осуществляется с помощью механизма control channel (RFC 6230 Media Control Channel Framework, RFC 6231 IVR Control Package, RFC 6505 Mixer Control Package);
- Нода — представляет собой виртуальную машину Erlang и является элементом вычислительного кластера ECSS-10. Ноды в ECSS-10 типизируются по выполняемому на них функционалу. Однотипные ноды объединяются в кластеры соответствующего типа. Пример: кластер Core состоит из нод, выполняющих функцию ядра коммутационной системы;
- СОРМ — система технических средств для обеспечения функций оперативно-розыскных мероприятий;
- IVR (англ. Interactive Voice Response), интерактивное голосовое меню — система предварительно записанных голосовых сообщений, выполняющая функцию маршрутизации звонков внутри call-центра или УПАТС с использованием информации, вводимой клиентом на клавиатуре телефона с помощью тонального набора;
- LDAP (англ. Lightweight Directory Access Protocol — «легковесный протокол доступа к каталогам») — протокол прикладного уровня для доступа к службе каталогов;
- RADIUS — протокол, который предоставляет централизованный метод аутентификации пользователей путем обращения к внешнему серверу. Протокол RADIUS используется для аутентификации, авторизации и учета. Сервер RADIUS использует базу данных пользователей, которая содержит данные проверки подлинности для каждого пользователя. Таким образом, использование протокола RADIUS обеспечивает централизованное управление и дополнительную защиту при доступе к ресурсам сети.
Предварительные условия
Перед началом настройки конфигурации необходимо убедиться в следующем:
- установлена операционная система;
- настроен доступ в сеть Интернет;
- установлено необходимое ПО;
- установлены необходимые компоненты ECSS;
- настроен сервис NTP;
- подключен и работает Token;
- все подсистемы ECSS запущены и работают;
- установлены корректные паспорт и лицензия;
- если система в кластере, то дополнительно:
Настройка ECSS-10 для производительных систем
Для производительных систем настройка ECSS-10 состоит из следующих этапов:
Выделение отдельных ядер процессора для MSR
Для того чтобы изолировать MSR-медиасервер от остальной сиcтемы, необходимо выделить под него отдельные ядра процессора. Для выделения отдельных ядер процессора необходимо выполнить следующие действия:
Отредактировать файл grub:
sudo nano /etc/default/grub
Привести параметр GRUB_CMDLINE_LINUX="" к следующему виду:
Данный пример изолирует ядра с 8 по 11. Также возможен вариант с перечислением 1, 2, 4-6 и т.п.GRUB_CMDLINE_LINUX="isolcpus=0-4"
Обновить конфигурацию grub. Для этого выполните команду:
sudo update-grub
Перезапустить систему.
Если всё сделано правильно, то после перезагрузки на изолированных ядрах htop будет показывать нулевую нагрузку.
Пример (Было / Стало):


Установка работы CPU в режим perfomance
По умолчанию в Ubuntu есть пять профилей работы процессора.
Описание профилей:
- conservative — медленно повышает частоту процессора в зависимости от нагрузки на систему и резко сбрасывает частоту к минимальной при простое;
- ondemand — быстро повышает частоту процессора при возрастании нагрузки и медленно сбрасывает частоту к минимуму при простое;
- userspace — позволяет указывать частоту вручную;
- powersave — соответствует минимальной допустимой частоте CPU;
- performance — соответствуют максимальной частоте CPU.
Выставить параметры ОС в режим производительности
Используем утилиту cpufrequtils.
sudo apt install cpufrequtils
По умолчанию после инсталляции Ubuntu использует режим "ondemand" - "по запросу" (производительность CPU по запросу приложений, экономит электроэнергию , но ниже производительность):
cat /etc/init.d/cpufrequtils | grep GOVERNOR=
# GOVERNOR="ondemand" GOVERNOR="ondemand"
Установить режим - результативность/производительность - в файле /etc/init.d/cpufrequtils значение "ondemand" заменить на "performance"
sudo nano /etc/init.d/cpufrequtils
Перезапустить утилиту:
sudo /etc/init.d/cpufrequtils restart
Затем выполнить команду:
sudo systemctl daemon-reload
Запуск MSR на изолированных ядрах процессора
Для того чтобы MSR запускался на отдельных ядрах процессора, необходимо:
- Включить экземпляр MSR:
systemctl enable ecss-media-server@msr.service systemctl edit ecss-media-server@msr.service
- Привести файл /etc/systemd/system/ecss-media-server.service.d/override.conf к следующему виду:
[Service] CPUAffinity=8-11 CPUSchedulingPolicy=rr
Для просмотра того, на каких ядрах запустился сервис, можно воспользоваться htop. В нем нужно добавить колонку Processor.
В данном примере MSR запущен на ядрах 8, 9, 10, 11. CPUSchedulingPolicy необходим, только если указан isolcpus.
Настройка MSR более подробно описана на странице Настройка медиасервера (MSR).
Аналогичным образом настраивается конфигурация ядер для CORE/SIP/SIGTRAN/DS/MD
Настройка использования определенных ядер процессора для erlang-based служб
Для того чтобы ядра процессора использовались правильно, необходимо скорректировать параметры запуска erlang-нод на производительных системах.
Для этого разрабатывается схема размещения нод на ядрах.
Схема разрабатывается по следующим правилам:
- использовать более двух ядер;
- необходимо, чтобы одна нода не использовала ядра на разных процессорах;
- для сильно нагруженных нод, таких как core и sip, нужно выделять индивидуальные ядра;
- ноды, которые не загружены, можно размещать на одном ядре;
- для core необходимо выделять большее количество ядер.
Распределения ядер на примере двухпроцессорного сервера HP BL660 c двумя процессорами Intel Xeon E5-4657L c 12 ядрами и поддержкой гипертрединга, которые могут образовать 8 виртуальных ядер:
myc 0-3 ds 4-7 core 8-23 sip 24-31 md 32-35 rest 36-39 sp 40-43 msr 44-47
Для осуществления данного распределения необходимо включить режим использования только необходимого количества ядер на erlang-ноде.
Для этого редактируем файл vm.args каждой ноды, расположенный по пути /usr/lib/ecss/ECSS-SERVICE-NAME/releases/VERSION/.
Например, для ecss-core необходимо отредактировать файл:
sudo nano /usr/lib/ecss/ecss-core/releases/3.14.2.29/vm.args
В этот файл добавить опции, которые задают использование требуемого количества логических ядер процессора и количество активных шедулеров.
Для 16-ти ядер это:
+sct L0-15c0-15 +sbt db +S16:16
Для 8-ми ядер:
+sct L0-7c0-7 +sbt db +S8:8
Для 4-х ядер:
+sct L0-3c0-3 +sbt db +S4:4
Для 2-х ядер:
+sct L0-1c0-1 +sbt db +S2:2
Следующая задача — установить сервис на выбранные ядра. Делается это аналогично тому, как описано для MSR.
Необходимо выполнить команду:
sudo systemctl edit ECSS-SERVICE-NAME
Далее добавить параметры:
[Service] CPUAffinity=0-3
где в значении CPUAffinity указываются те ядра, на которых должны запускаться процессы сервиса.
Пример настройки ecss-core по указанной выше схеме:
> sudo systemctl edit ecss-core.service [Service] CPUAffinity=8-23
После настройки параметров CPUAffinity для всех сервисов необходимо перезагрузить конфигурацию услуг командой:
sudo systemctl daemon-reload
Перезапустить сервисы:
sudo systemctl restart ecss.slice
Убедиться в корректной привязке сервисов к ядрам можно утилитой htop, включив отображение колонки PROCESSOR.
Порядок начальной настройки конфигурации
В первую очередь необходимо выполнить общие настройки для всей системы:
- медиасервер;
- IP-set
- Создание и настройка доменов
- маршрутизация, модификация и адаптация;
- пользователи ECSS;
- опционально:
- СОРМ;
- RADIUS;
- LDAP.
Далее необходимо задекларировать и настроить следующие сервисы:
- домены;
- транки;
- бриджи;
- IVR;
- абоненты;
- услуги на транках и абонентах.
В последнюю очередь настраиваются дополнительные сервисы.
Рекомендуется проводить первоначальную настройку в порядке, приведенном ниже.
Настройка программного медиасервера
Порядок настройки программного медиасервера (MSR):
- настройка конфигурационного файла медиасервера;
- запуск медиасервера;
- добавление медиаресурсов на ECSS-10:
- командами CLI (см. раздел "/system/media/resource/ - команды управления медиаресурсами");
- через приложение web-конфигуратора "Сетевые окончания MSR (MSR registrars)".
- опционально в соответствии с проектом:
Создание и настройка группы SIP-IP-адресов (IP-set)
Произвести настройку адаптера SIP можно выполнить одним из двух способов:
Без предварительного создания IP-set не будут работать команды создания Домена/транка/абонента. Для работы данных объектов обязательным условием является информация, через какие IP адреса (порты) будет выполняться обмен сигнальной информацией. IP-set может быть как индивидуальный для каждого домена, так и общим для всех доменов SSW, в зависимости от проекта. Так же можно назначить на разные домены индивидуальные порты ( для примера домен А использует порт=5061, а домен В порт=5062) на одних IP адресах (10.0.10.91/92)
Пример создание через CLI (в примере имя IP set "test_set", IP add = 10.0.10.91/92)
- Создать IP set и указать IP адрес для первой ноды:
/cluster/adapter/sip1/sip/network/set ip_set test_set node-ip node = sip1@ecss1 ip = 10.0.10.91 - К созданному IP set добавить IP адрес второй ноды:
/cluster/adapter/sip1/sip/network/set ip_set test_set node-ip node = sip1@ecss2 ip = 10.0.10.92 - К созданному IP set добавить IP порт:
/cluster/adapter/sip1/sip/network/set ip_set test_set listen-ports list = [5060]
Пример создание через Web (в примере имя IP set "test_set", IP add = 10.0.10.91/92) приложение "Кластеры"
- Открыть приложение "Кластеры";
- Двойным кликом открыть "sip1 adapter";
- В окне Свойства кластера "sip1" выбрать "Транспорт";
- Добавить;
- Указать имя нового IP set (в примере "test_set");
- Из выпадающего списка выбрать IP адрес, через который будет работать ecss2 нод;
- Так же указать IP адрес для ecss1 нод (по умолчанию подставляет 127.0.0.1);
- Выбрать правильный (в примере 10.0.10.91);
- Сохранить.

Создание и настройка доменов (виртуальных АТС)
Данный этап включает в себя процесс создания виртуальных АТС, настройку правил маршрутизации вызовов, транков, абонентов, правил обслуживания абонентов.
Вся инфраструктура предоставления услуг телефонной связи на базе ECSS-10, а именно конфигурация подключаемых шлюзов, абонентские данные, план нумерации и правила маршрутизации, а также права доступа к функциям операционного управления и поддержки описываются в рамках определенного домена.
Таким образом, домен можно представить как логическую часть гибкого коммутатора, реализующую функционал отдельной АТС.
Таких сущностей на гибком коммутаторе может быть несколько. В системе ECSS-10 домен и виртуальная АТС — синонимы.
Фактически развертывание нескольких доменов и связей между ними дает возможность реализации сегмента или всей сети NGN в рамках одной инсталляции.
Системы доменов и гибкая система разграничения прав доступа позволяет оператору связи выполнять функции хостинга АТС для сторонних заказчиков.
Заказчик оператора связи может разместить свою корпоративную УПАТС или узел связи на мощностях системы ECSS-10, развернутой у оператора. При этом функции операционного управления за данной АТС могут быть переданы заказчику полностью или частично (используется схема разграничения ответственности за эксплуатацией данной АТС).
Декларация доменов
Необходимо создать домен по каждому из запроектированных доменов (виртуальных АТС).
Создание домена можно выполнить одним из двух способов:
Пример создание через CLI (в примере имя домена "test_test"):
- Создать домен с именем "test_domain":
/domain/declare test_test--add-domain-admin-privileges --add-domain-user-privileges - Подключить к созданному домену, ранее созданный IP-set ("test_set"):
/domain/test_test/sip/network/set ip_set [test_set] - Назначить на созданный домен доступные услуги (все или определенные/необходимые):
/cluster/storage/ds1/ss/access-list add test_domain * - Установить на созданном домене политику применения лицензии с указанием имени (для примера "new_sub")
/domain/test_test/ss/licence/politics/declare new_sub - Добавить на созданном домене в новую политику пакет лицензионных услуг (для примера "ECSS-FULL+")
/domain/test_test/ss/licence/politics/package-add new_sub ECSS-FULL+ - Активизируем новую политику применения лицензии на новом домене:
/domain/test_test/ss/licence/politics/activate new_sub
Пример создание через Web (в примере имя домена "test_test") приложение "Домены":
Создание домена
- Выбрать "Добавить домен";
- Указать имя нового домена (в примере "test_test");
- Сохранить ("Ок").

Подключение IP set
- Выбрать домен (в примере "test_test");
- Выбрать "Свойства домена";
- Выбрать "SIP/SIP транспорт";
- Выбрать IP set, который будет обслуживать данный домен, из выпадающего списка;
- Сохранить.

Конфигурацию услуг, для нового домена, выполнить в CLI.
После создания доменов в файловой системы автоматически создадутся нужные каталоги уровня домена.
Для примера :
/var/lib/ecss/modification/ctx/src/Имя_домена
/var/lib/ecss/routing/ctx/src/Имя_домена
/var/lib/ecss/cdИмя_домена
и т.д.
Настройка маршрутизации
Контекст маршрутизации — совокупность правил маршрутизации уникальная в домене маршрутизации, в рамках которого идет определение интерфейса вызываемого абонента.
Описание процесса маршрутизации вызовов в системе ECSS-10 приведено в разделе "Виртуальная АТС. Маршрутизация телефонных вызовов".
Создание контекстов маршрутизации
В соответствии с проектом необходимо создать контексты маршрутизации вызовов, которые в дальнейшем будут применяться в настройках доменов.
Это можно сделать несколькими способами:
- создать и импортировать контексты вручную в формате, указанном в документации. Контексты в формате xml создаются в каталоге /var/lib/ecss/routing/ctx/src/<DOMAIN>;
- создать и настроить контексты, используя приложение web-конфигуратора "Менеджер маршрутизации (Routing manager)" для каждого домена;
- опционально — настроить RADIUS-маршрутизацию.
Далее, если это определено в проекте, необходимо подготовить контексты модификации и адаптации также для каждого домена.
Применение контекстов маршрутизации для системных интерфейсов
Для интерфейсов system:ivr и system:teleconference необходимо назначить контексты маршрутизации. Настройки выполняются с помощью команд CLI. Описание и примеры команд приведены в разделе "/domain/<DOMAIN>/system-iface/ - команды управления системными интерфейсами".
Создание и настройка абонентов
В соответствии с проектом в доменах нужно создать требуемое количество абонентов. Сделать это можно с помощью команды CLI /domain/<DOMAIN>/sip/user/declare или приложения web-конфигуратора "1Карточка абонента (Subscriber card)".
При создании абоненту нужно назначить номер, группу, контекст маршрутизации, CDR-группу, способ авторизации и авторизационные данные. Также сразу можно для каждого абонента назначить набор необходимых услуг и настроить необходимые ограничения.
Абоненты в домене — условие необязательное, в системе могут быть и чисто транзитные домены, на которых настраиваются соответствующие правила прохождения вызовов.
Создание и настройка транков
- Транк представляет собой совокупность ресурсов для обслуживания телефонных вызовов в заданном направлении (см. раздел "Транки и бриджи");
- SIP-Транк представляет собой направление, работающее по протоколу SIP/SIP-Т/SIP-I;
- Динамический транк — транк с обязательной поддержкой регистрации. Для совершения вызова по динамическому транку взаимодействующий шлюз должен быть зарегистрирован по данному транку в системе ECSS-10.
Декларация и настройка транков производится:
- через интерфейс командной строки, см. раздел "/domain/<DOMAIN>/trunk/sip/ - команды управления транками SIP";
- через приложение web-конфигуратора "Менеджер транков (Trunk manager)".
Порядок создания и настройки транков приведен в разделе "Управление SIP-транками".
Далее на транках настраиваются необходимые сервисы.
Создание и настройка bridge-интерфейсов
Бридж — виртуальный транк, позволяющий соединять между собой две виртуальные АТС в рамках одной системы ECSS-10.
Если в системе имеется более одного домена, то связь между ними осуществляется с помощью бриджей (см. раздел "Транки и бриджи").
Бриджи создаются и настраиваются:
- через интерфейс командной строки, см. раздел "/bridge/ — команды управления bridge-интерфейсами";
- через приложение web-конфигуратора "Менеджер бриджей (Bridge manager)".
Настройка ограничений
Для каждого домена существует возможность задать разного рода ограничения в рамках лицензии.
Таблица 1. Список ограничений уровня домена
| Название свойства | Значение по умолчанию | Описание |
|---|---|---|
| alias_limit | infinity (ограничено лицензией) | Общее количество абонентов (в том числе и виртуальных) в данной виртуальной АТС. |
| call_limit | infinity (ограничено лицензией) | Общее количество одновременно активных вызовов для данной виртуальной АТС. |
| virtual_alias_limit | infinity (ограничено лицензией) | Общее количество виртуальных абонентов в данной виртуальной АТС. |
| digitmap | Cписок масок набора, по которому будет валидироваться алиасы при создании. Описание параметра приведена на странице /domain/ — команды управления виртуальными АТС | |
| failover | true | Необходимость в резервировании вызовов на данной виртуальной АТС. Параметр используется только в системах с резервированием. Поскольку использование резерва увеличивает потребление ресурсов системы (процессор, оперативная память и другое), то исключение виртуальной АТС из схемы резервирования позволяет сэкономить часть ресурсов и направить сэкономленные ресурсы на обработку вызовов. В штатной работе системы это позволяет увеличить производительность в ущерб надежности. |
| callcenter\enabled | true | Доступ к контакт-центру для данной виртуальной АТС. |
| callcenter\active_agents | infinity (ограничено лицензией) | Максимальное количество подключаемых агентов Call-центра для домена. |
| callcenter\active_supervisors | infinity (ограничено лицензией) | Максимальное количество подключаемых супервизоров Call-центра для домена. |
tc\active_conferences | infinity (ограничено лицензией) | Максимальное количество активных конференций для домена. |
| tc_count_active_channels | infinity (ограничено лицензией) | Максимальное количество подключаемых абонентов в конференцию сервиса Teleconference для домена. |
| ivr\enabled | true | Доступ к функциям IVR и dialer для данной виртуальной АТС. |
| ivr\incoming_script\enabled | true | Использовать для входящих транков в качестве контекста маршрутизации IVR-скрипт default_incoming_call. |
| teleconference\enabled | true | Доступ к сервису "Селекторная связь" для данной виртуальной АТС. |
| tsmn\concurrent_calls | 0 | Общее количество одновременно активных вызовов для системы TSMN на основном транке. |
| tsmn\concurrent_calls\redundancy | 0 | Общее количество одновременно активных вызовов для системы TSMN на резервном транке. |
| add_on_conferences_limit | infinity (ограничено лицензией) | Общее количество одновременно активных конференций для данной виртуальной АТС. |
| meet_me_limit | infinity (ограничено лицензией) | Общее количество активных пользователей "meet me" комнат для данной виртуальной АТС. |
| chat_room_limit | infinity (ограничено лицензией) | Общее количество активных конференц-комнат для данной виртуальной АТС. |
| dialer\channels | 0 (ограничено лицензией) | Количество одновременных вызовов для кампаний обзвона. |
| recorder\voice\channels | 0 (ограничено лицензией) | Количество одновременных каналов записи разговоров. |
| ss_package | 0 (ограничено лицензией) | Количество лицензионных пакетов услуг. |
| elph\member\limi | infinity (ограничено лицензией) | Количество активных регистраций клиентов Elph. |
Ограничения настраиваются в соответствии с проектом:
- через интерфейс командной строки, см. раздел "/domain/<DOMAIN>/properties/restrictions/ - команды управления ограничениями виртуальной АТС";
- через приложение web-конфигуратора "Домены (Domains)" (Свойства домена -> Системные параметры -> Ограничения).
Сценарии IVR
Для каждой виртуальной АТС можно настроить дополнительные сценарии IVR, если они сразу предусмотрены проектом. Сценарии создаются в приложении web-конфигуратора "IVR-редактор (IVR editor)". Также управлять сценариями можно с помощью команд CLI. Описание и примеры приведены в разделе "/domain/<DOMAIN>/ivr/ - команды управления IVR-скриптами".
При необходимости для каждого домена можно настроить ограничения для работы IVR:
- через интерфейс командной строки, см. раздел "/system/ivr/script/restrictions/ - команды управления настройками ограничений IVR-скриптов";
- через приложение web-конфигуратора "Редактор IVR ограничений (IVR restrictions manager)".
Настройка дополнительных сервисов
Если предусмотрено проектом, на начальном этапе настраиваются также дополнительные сервисы.
Настройка взаимодействия с серверами RADIUS
Описание и настройка взаимодействия с подсистемой AAA (Authentication, Authorization, Accounting) приведены в разделе "Настройка динамических абонентов и системы RADIUS".
Порядок настройки взаимодействия с серверами ААА:
- настройка параметров виртуальной АТС для взаимодействия с сервером аутентификации/авторизации (RADIUS);
- настройка параметров виртуальной АТС для взаимодействия с сервером аккаунтинга (RADIUS);
- настройка ограничений связи при сбое сервера.
Настройка функции СОРМ
В комплексе ECSS-10 заложены возможности для выполнения требований к системе технических средств по обеспечению функций оперативно-розыскных мероприятий на электронных АТС, утвержденные приказом Госкомсвязи России от 20.04.1999 № 70 и приказом Минкомсвязи России №268 от 19.11.2012.
Порядок настройки функции СОРМ:
- проверка наличия соответствующей лицензии;
- настройка протокола взаимодействия с посредником СОРМ;
- настройка маршрутизации в соответствии с требованиями сотрудников спецслужб.
Описание и настройка системы СОРМ приведены в разделе "Система СОРМ".
Настройка дополнительных приложений
В составе экосистемы ECSS-10 возможно использование дополнительных сервисных приложений, расширяющих функциональные возможности:
- Call-центр;
- инструментарий для проведения селекторных совещаний;
- сервис "Автообзвон";
- сервис автоматического распознавания речи (ASR);
- интеграции с Desktop-ассистент, CRM, Skype for business);
- сервис "Автосекретарь";
визуализация статистических данных в системе мониторинга "Grafana";
- приложение "Портал абонента";
- система "Autoprovision (AUP)" для автоматического конфигурирования и обновления ПО телефонных аппаратов.
Описание данных приложений приведено в соответствующих разделах документации.