В данном разделе приведено описание этапов первоначальной настройки ECSS перед проверкой базового функционала.

Понятия и определения

  • Алиас — совокупность данных об абоненте;
  • Бридж — виртуальный шлюз, объединяющий связь между виртуальными АТС. Понятие «бридж» было введено для создания средств контроля соединениями между виртуальными АТС. Вызовы между виртуальными АТС одной системы ECSS-10 маршрутизируются в рамках данной системы через бридж. При этом не задействованы межстанционные соединительные линии. Бридж представлен в виде двух связанных друг с другом интерфейсов. Каждый интерфейс декларирован в своей виртуальной АТС. Для бриджа, как и для классического транка, могут быть заданы различные типы ограничений, например, количество каналов, что дает ограничение на количество одновременно установленных соединений между виртуальными АТС и позволяет нормировать нагрузку;
  • Домен (виртуальная АТС) — совокупность, состоящая из множества контекстов маршрутизации, интерфейсов и алиасов. Ближайший эквивалент — описание плана нумерации и маршрутизации в рамках классической телефонной станции для традиционных сетей;
  • Кластер — совокупность элементов одного типа, выполняющих, с точки зрения системы, единую функцию. С их помощью описывается вычислительная топология системы. В нашей системе элементом кластера является нода. Кластер существует до тех пор, пока в его состав входит хотя бы одна нода;
  • Медиаресурсыописание параметров медиасервера, необходимых для работы с ним;
  • Медиасервер (MSR) — компонент системы ECSS-10, предназначенный для прокcирования речевой и видеоинформации по протоколу RTP, организации конференций, записи разговоров, воспроизведения медиафайлов и различных комбинаций этих режимов. Управление ресурсами медиасервера осуществляется с помощью механизма control channel (RFC 6230 Media Control Channel FrameworkRFC 6231 IVR Control PackageRFC 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-10 для производительных систем

Для производительных систем настройка ECSS-10 состоит из следующих этапов:

Выделение отдельных ядер процессора для MSR

Для того чтобы изолировать MSR-медиасервер от остальной сиcтемы, необходимо выделить под него отдельные ядра процессора. Для выделения отдельных ядер процессора необходимо выполнить следующие действия:

  1. Отредактировать файл grub:

    sudo nano /etc/default/grub

    Привести параметр GRUB_CMDLINE_LINUX="" к следующему виду:

    Данный пример изолирует ядра с 8 по 11. Также возможен вариант с перечислением 1, 2, 4-6 и т.п.
    GRUB_CMDLINE_LINUX="isolcpus=0-4"


  2. Обновить конфигурацию grub. Для этого выполните команду:

    sudo update-grub
  3. Перезапустить систему.

    Если всё сделано правильно, то после перезагрузки на изолированных ядрах htop будет показывать нулевую нагрузку.

Пример (Было / Стало):

Установка работы CPU в режим perfomance

По умолчанию в Ubuntu есть пять профилей работы процессора.

Описание профилей:

  • conservative — медленно повышает частоту процессора в зависимости от нагрузки на систему и резко сбрасывает частоту к минимальной при простое;
  • ondemand — быстро повышает частоту процессора при возрастании нагрузки и медленно сбрасывает частоту к минимуму при простое;
  • userspace  позволяет указывать частоту вручную;
  • powersave  соответствует минимальной допустимой частоте CPU;
  • performance — соответствуют максимальной частоте CPU.

Выставить параметры ОС в режим производительности

Используем  утилиту cpufrequtils.

sudo apt install cpufrequtils
BASH

По умолчанию после инсталляции Ubuntu использует режим "ondemand" - "по запросу" (производительность CPU по запросу приложений, экономит электроэнергию , но ниже производительность):

cat /etc/init.d/cpufrequtils | grep GOVERNOR=
CODE
Результат:  режим работы по умолчанию после инсталляции - "ondemand"
#	GOVERNOR="ondemand"
GOVERNOR="ondemand"

Установить режим - результативность/производительность  -  в файле /etc/init.d/cpufrequtils значение "ondemand" заменить на "performance"

sudo nano /etc/init.d/cpufrequtils
BASH

Перезапустить утилиту:

sudo /etc/init.d/cpufrequtils restart 
BASH

Затем выполнить команду:

sudo systemctl daemon-reload
BASH


Запуск MSR на изолированных ядрах процессора

Для того чтобы MSR запускался на отдельных ядрах процессора, необходимо: 

  1. Включить экземпляр MSR:
    systemctl enable ecss-media-server@msr.service
    systemctl edit ecss-media-server@msr.service
  2. Привести файл /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):


Создание и настройка группы SIP-IP-адресов (IP-set)

Произвести настройку адаптера SIP можно выполнить одним из двух способов:

  • через интерфейс командной строки (CLI);
  • через приложение web-конфигуратора "Кластеры".

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

  1. Создать IP set и указать IP адрес для первой ноды:
    /cluster/adapter/sip1/sip/network/set ip_set test_set node-ip node = sip1@ecss1 ip = 10.0.10.91
  2. К созданному IP set добавить IP адрес второй ноды:
    /cluster/adapter/sip1/sip/network/set ip_set test_set node-ip node = sip1@ecss2 ip = 10.0.10.92
  3. К созданному 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) приложение "Кластеры"

  1. Открыть приложение "Кластеры";
  2. Двойным кликом открыть "sip1 adapter";
  3. В окне Свойства кластера "sip1" выбрать "Транспорт";
  4. Добавить;
  5. Указать имя нового IP set (в примере "test_set");
  6. Из выпадающего списка выбрать IP адрес, через который будет работать ecss2 нод;
  7. Так же указать IP адрес для ecss1 нод (по умолчанию подставляет 127.0.0.1);
  8. Выбрать правильный (в примере 10.0.10.91);
  9. Сохранить.

Создание и настройка доменов (виртуальных АТС)

Данный этап включает в себя процесс создания виртуальных АТС, настройку правил маршрутизации вызовов, транков, абонентов, правил обслуживания абонентов.

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

Таким образом, домен можно представить как логическую часть гибкого коммутатора, реализующую функционал отдельной АТС. 
Таких сущностей на гибком коммутаторе может быть несколько. В системе ECSS-10 домен и виртуальная АТС — синонимы. 
Фактически развертывание нескольких доменов и связей между ними дает возможность реализации сегмента или всей сети NGN в рамках одной инсталляции. 
Системы доменов и гибкая система разграничения прав доступа позволяет оператору связи выполнять функции хостинга АТС для сторонних заказчиков. 
Заказчик оператора связи может разместить свою корпоративную УПАТС или узел связи на мощностях системы ECSS-10, развернутой у оператора. При этом функции операционного управления за данной АТС могут быть переданы заказчику полностью или частично (используется схема разграничения ответственности за эксплуатацией данной АТС).

Декларация доменов

Необходимо создать домен по каждому из запроектированных доменов (виртуальных АТС).

Создание домена можно выполнить одним из двух способов:

  • через интерфейс командной строки (CLI);
  • через приложение web-конфигуратора "Домены".

Пример создание через CLI (в примере имя домена "test_test"):

  1. Создать домен с именем "test_domain":
    /domain/declare test_test --add-domain-admin-privileges --add-domain-user-privileges
  2. Подключить к созданному домену, ранее созданный  IP-set ("test_set"):
    /domain/test_test/sip/network/set ip_set [test_set]
  3. Назначить на созданный домен доступные услуги (все или определенные/необходимые):
    /cluster/storage/ds1/ss/access-list add test_domain *
  4. Установить на созданном домене политику применения лицензии с указанием имени (для примера "new_sub")
    /domain/test_test/ss/licence/politics/declare new_sub
  5. Добавить на созданном домене в новую политику пакет лицензионных услуг (для примера "ECSS-FULL+")
    /domain/test_test/ss/licence/politics/package-add new_sub ECSS-FULL+
  6. Активизируем новую политику применения лицензии на новом домене:
    /domain/test_test/ss/licence/politics/activate new_sub

Пример создание через Web (в примере имя домена "test_test") приложение "Домены":

Создание домена
  1. Выбрать "Добавить домен";
  2. Указать имя нового домена (в примере "test_test");
  3. Сохранить ("Ок").

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

Конфигурацию услуг, для нового домена, выполнить в CLI. 


После создания доменов в файловой системы автоматически создадутся нужные каталоги уровня домена.

Для примера :

/var/lib/ecss/modification/ctx/src/Имя_домена
/var/lib/ecss/routing/ctx/src/Имя_домена
/var/lib/ecss/cdИмя_домена

и т.д.

Настройка маршрутизации

Маршрутизация телефонных вызовов — это процесс определения интерфейса назначения для конкретного вызова на основании информации об интерфейсе источника вызова, информации о телефонном номере вызывающего и вызываемого абонента, категории вызывающего абонента, времени суток и дне недели.
Контекст маршрутизации — совокупность правил маршрутизации уникальная в домене маршрутизации, в рамках которого идет определение интерфейса вызываемого абонента.

Описание процесса маршрутизации вызовов в системе ECSS-10 приведено в разделе "Виртуальная АТС. Маршрутизация телефонных вызовов".

Создание контекстов маршрутизации

В соответствии с проектом необходимо создать контексты маршрутизации вызовов, которые в дальнейшем будут применяться в настройках доменов.

Это можно сделать несколькими способами:

Далее, если это определено в проекте, необходимо подготовить контексты модификации и адаптации также для каждого домена.

Применение контекстов маршрутизации для системных интерфейсов

Для интерфейсов 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.

Декларация и настройка транков производится:

Порядок создания и настройки транков приведен в разделе "Управление SIP-транками".

Далее на транках настраиваются необходимые сервисы.

Создание и настройка bridge-интерфейсов

Бридж  — виртуальный транк, позволяющий соединять между собой две виртуальные АТС в рамках одной системы ECSS-10.

Если в системе имеется более одного домена, то связь между ними осуществляется с помощью бриджей (см. раздел "Транки и бриджи").

Бриджи создаются и настраиваются:

Настройка ограничений

Для каждого домена существует возможность задать разного рода ограничения в рамках лицензии.

Таблица 1. Список ограничений уровня домена

Название свойстваЗначение по умолчаниюОписание
alias_limitinfinity (ограничено лицензией)Общее количество абонентов (в том числе и виртуальных) в данной виртуальной АТС.
call_limitinfinity (ограничено лицензией)Общее количество одновременно активных вызовов для данной виртуальной АТС.
virtual_alias_limitinfinity (ограничено лицензией)Общее количество виртуальных абонентов в данной виртуальной АТС.
digitmap

Cписок масок набора, по которому будет валидироваться алиасы при создании. Описание параметра приведена на странице /domain/ — команды управления виртуальными АТС

failovertrueНеобходимость в резервировании вызовов на данной виртуальной АТС. Параметр используется только в системах с резервированием. Поскольку использование резерва увеличивает потребление ресурсов системы (процессор, оперативная память и другое), то исключение виртуальной АТС из схемы резервирования позволяет сэкономить часть ресурсов и направить сэкономленные ресурсы на обработку вызовов. В штатной работе системы это позволяет увеличить производительность в ущерб надежности.
callcenter\enabledtrueДоступ к контакт-центру для данной виртуальной АТС.
callcenter\active_agentsinfinity (ограничено лицензией)Максимальное количество подключаемых агентов Call-центра для домена.
callcenter\active_supervisorsinfinity (ограничено лицензией)Максимальное количество подключаемых супервизоров Call-центра для домена.

tc\active_conferences

infinity (ограничено лицензией)Максимальное количество активных конференций для домена.
tc_count_active_channelsinfinity (ограничено лицензией)Максимальное количество подключаемых абонентов в конференцию сервиса Teleconference для домена.
ivr\enabledtrueДоступ к функциям IVR и dialer для данной виртуальной АТС.
ivr\incoming_script\enabledtrueИспользовать для входящих транков в качестве контекста маршрутизации IVR-скрипт default_incoming_call.
teleconference\enabledtrueДоступ к сервису "Селекторная связь" для данной виртуальной АТС.
tsmn\concurrent_calls0Общее количество одновременно активных вызовов для системы TSMN на основном транке.
tsmn\concurrent_calls\redundancy0Общее количество одновременно активных вызовов для системы TSMN на резервном транке.
add_on_conferences_limitinfinity (ограничено лицензией)Общее количество одновременно активных конференций для данной виртуальной АТС.
meet_me_limitinfinity (ограничено лицензией)Общее количество активных пользователей "meet me" комнат для данной виртуальной АТС.
chat_room_limitinfinity (ограничено лицензией)Общее количество активных конференц-комнат для данной виртуальной АТС.
dialer\channels0 (ограничено лицензией)Количество одновременных вызовов для кампаний обзвона.
recorder\voice\channels0 (ограничено лицензией)Количество одновременных каналов записи разговоров.
ss_package0 (ограничено лицензией)Количество лицензионных пакетов услуг.
elph\member\limiinfinity (ограничено лицензией)Количество активных регистраций клиентов Elph.

Ограничения настраиваются в соответствии с проектом:

Сценарии IVR

Для каждой виртуальной АТС можно настроить дополнительные сценарии IVR, если они сразу предусмотрены проектом. Сценарии создаются в приложении web-конфигуратора "IVR-редактор (IVR editor)".  Также управлять сценариями можно с помощью команд CLI. Описание и примеры приведены в разделе "/domain/<DOMAIN>/ivr/ - команды управления IVR-скриптами".

При необходимости для каждого домена можно настроить ограничения для работы IVR:

Настройка дополнительных сервисов

Если предусмотрено проектом, на начальном этапе настраиваются также дополнительные сервисы.

Настройка взаимодействия с серверами RADIUS

Описание и настройка взаимодействия с подсистемой AAA (Authentication, Authorization, Accounting) приведены в разделе "Настройка динамических абонентов и системы RADIUS".

Порядок настройки взаимодействия с серверами ААА:

  • настройка параметров виртуальной АТС для взаимодействия с сервером аутентификации/авторизации (RADIUS);
  • настройка параметров виртуальной АТС для взаимодействия с сервером аккаунтинга (RADIUS);
  • настройка ограничений связи при сбое сервера.

Настройка функции СОРМ

В комплексе ECSS-10 заложены возможности для выполнения требований к системе технических средств по обеспечению функций оперативно-розыскных мероприятий на электронных АТС, утвержденные приказом Госкомсвязи России от 20.04.1999 № 70 и приказом Минкомсвязи России №268 от 19.11.2012.

Порядок настройки функции СОРМ:

  • проверка наличия соответствующей лицензии;
  • настройка протокола взаимодействия с посредником СОРМ;
  • настройка маршрутизации в соответствии с требованиями сотрудников спецслужб.

Описание и настройка системы СОРМ приведены в разделе "Система СОРМ".

Настройка дополнительных приложений

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

Описание данных приложений приведено в соответствующих разделах документации.