СОРМ-концентратор
Общая работа системы
Подсистема СОРМ-концентратор позволяет СОРМировать несколько виртуальных АТС (доменов) как одну, что позволяет скрыть от пульта СОРМ внутреннюю структуру ECSS-10. Режим работы SORM-концентратор очень напоминает работу MultiSORM, но отличия присутствуют. Основное отличие между этими двумя режимами работы: в MultiSORM предполагается установление соединения между абонентами разных доменов (и выхода на внешнюю сеть) через центральный домен, а в случае SORM-концентратор все домены равнозначны (выход на сеть может быть с локального домена, соединение между доменами устанавливается напрямую), и данный режим предполагает использования правил Адаптации в каждом домене. В случае использования MultiSORM достаточно создания правил Адаптации в центральном домене (все звонки проходят через него).
При использовании подсистемы СОРМ-концентратор СОРМ-посредник подключается ко всем доменам, где авторизуется по имени и паролю. При прохождении процедуры авторизации подсистема СОРМ-концентратор проверяет конфигурацию доменов подключенных к подсистеме. Если подсистема СОРМ-концентратор не смогла подключить хотя бы один из доменов по причине, что он не существует либо имеет некорректные настройки для взаимодействия с СОРМ-посредником, то авторизация будет неуспешной даже несмотря на то, что авторизационные имя и пароль будут верными. При успешной авторизации подсистема СОРМ-концентратор переходит в режим передачи команд, полученных от СОРМ-посредника в подключенные домены. Команда транслируется сразу во все подключенные домены и, если хотя бы из одного получен положительный ответ, то он передается на СОРМ-посредник.
Например, от СОРМ-посредника принята команда №5 «постановка на контроль». Она транслируется во все домены, подключенные к подсистеме СОРМ-концентратор и, если хотя бы один домен поставил принятый в команде номер на контроль, то значит, что команда выполнена успешно. В случае, если от всех доменов получен отрицательный ответ, на СОРМ-посредник будет протранслирован отрицательный ответ.
Абоненты доменов ставятся на контроль по короткому номеру со значностью, принятой в данном домене, как абоненты данной станции. Подсистема СОРМ-концентратор для своей работы требует одного ограничения — локальные номера во всех подключенных доменах должны быть уникальными, то есть номера из одного домена не должны присутствовать в других.
Маршрутизация вызовов между доменами осуществляется через бриджи, маршрутизация между абонентами одного домена — локально внутри домена, а маршрутизация на выход в город прописывается в каждом домене индивидуально. В этом и заключается основное отличие от MultySORM, в котором выход на внешнюю сеть реализован только в одном узловом домене. В данном случае требуется создавать правила маршрутизации, правила модификации, и, самое важное в данном разделе, правила Адаптации, в каждом домене индивидуально. Если вызов идет на город, абонент будет СОРМироваться по полному номеру, если вызов осуществляется внутри локального домена или между локальными доменами, то вызов будет СОРМироваться по локальному короткому номеру.
Конфигурирование подсистемы СОРМ-концентратор
При конфигурировании подсистемы СОРМ-концентратор подразумеваем, что локальные и центральный домены уже созданы. В локальных доменах созданы локальные абоненты с короткой нумерацией, а в центральном домене создан SIP-транк для выхода на городское направление.
Настройка глобальных параметров СОРМ
Для подключения СОРМ-посредника подсистема СОРМ-концентратор использует ssh-порт, на единицу больший, чем указано в параметре ssh_port.
Параметр ssh_port настраивается командой:
sorm/set ssh_port <value>
- <value> — значение порта в диапазоне 1-65535. По умолчанию значение данного параметра равно 7777, то есть по умолчанию подсистема
Сорм концентратор будет использовать порт 7778.
Для взаимодействия СОРМ-посредника с программным коммутатором в режиме СОРМ-концентратор необходимо настроить следующие параметры:
- IP-адрес сервера — IP-адрес программного коммутатора ECSS-10 для взаимодействия по протоколу SSH (ecss1);
- Резервный IP-адрес — IP-адрес резервного программного коммутатора ECSS-10 для взаимодействия по протоколу SSH (ecss2);
- Порт — транспортный порт протокола ТСР, открытый на хосте программного коммутатора ECSS-10 для взаимодействия с СОРМ-концентратор посредником по протоколу SSH. Для настройки работы подсистемы СОРМ-концентратор параметру необходимо указать значение, настроенное в конфигурации программного коммутатора+1 (7778);
- Имя пользователя — имя пользователя для взаимодействия с программным коммутатором по протоколу SSH. В качестве значения параметра указывается имя заданное командой /sorm/set aggregate_sorm_settings add;
- Пароль — пароль пользователя, взаимодействующего с программным коммутатором по протоколу SSH. В качестве значения параметра указывается пароль заданный командой /sorm/set aggregate_sorm_settings add;
Проверка лицензирования протокола СОРМ в лицензии ECSS-10 выполняется командой:
выполняется в CoCon
/cluster/storage/ds1/licence/current-limits
Значение параметра СОРМ "enabled" должно быть "true". Количество каналов "channels on SORM mediator" указывает количество доменов, которые могут быть добавлены в группу СОРМирования.
SORM enabled true channels on SORM mediator 2
В текущем примере необходимо добавить только два домена.
Список доменов, которые будут СОРМироваться и авторизационные данные пользователя подсистемы СОРМ-концентратор (имя/пароль) настраиваются командой (имена доменов вносится через пробел):
выполняется в CoCon
/sorm/set aggregate_sorm_settings add <User> <Password> <DOMAIN_1> [<DOMAIN_2> ...[<DOMAIN_N>]]
sorm/set aggregate_sorm_settings add <User> <Password> <DOMAIN_1> [<DOMAIN_2> ...[<DOMAIN_N>]]
где:
- <User> — имя пользователя подсистемы СОРМ-концентратор (должно совпадать со значением "Имя пользователя" в конфигурации СОРМ-посредник);
- <Password> — пароль пользователя подсистемы СОРМ-концентратор (должно совпадать со значением "Пароль" в конфигурации СОРМ-посредник);
- <DOMAIN_1>..<DOMAIN_N> — имя локального или центрального домена.
В случае добавления большего количества доменов, чем описано в лицензии, команда выполнится, но система не сможет подключить не одного из них, и будут сгенерированы аварии по объекту СОРМ для каждого добавленного домена.
abf@[megaco1@ecss1#ECSS-3.16-TEST-3]:/$ sorm/set aggregate_sorm_settings add multi1 multi1 test_domain Local32 Property "aggregate_sorm_settings" successfully changed from: to User: multi1; Password: multi1; Domains: ["test_domain","Local32"]. [exec at: 12.03.2024 09:55:46, exec time: 207ms, otp: 24, nodes: core1@ecss1 v.3.16.3.1459] abf@[megaco1@ecss1#ECSS-3.16-TEST-3]:/$ sorm/info ┌───────────────────────┬──────────────────────────────────────────────────────────────────┐ │ Property │ Value │ ├───────────────────────┼──────────────────────────────────────────────────────────────────┤ │aggregate_sorm_settings│User: multi1; Password: multi1; Domains: ["test_domain","Local32"]│ │ssh_dir │/etc/ecss/ssh │ │ssh_listen_interface │0.0.0.0 │ │ssh_port │7777 │ └───────────────────────┴──────────────────────────────────────────────────────────────────┘ [exec at: 12.03.2024 09:55:49, exec time: 38ms, otp: 24, nodes: core1@ecss2 v.3.16.3.1459]
Для автоматического добавления доменов без повторной постановки абонента на контроль и без перезапуска СОРМ существуют шаблоны доменов. Задаются они следующими командами:
- подключение всех доменов
sorm/set aggregate_sorm_settings add multi1 multi1 *
- подключение всех доменов за исключением одного (например, test)
sorm/set aggregate_sorm_settings add multi1 multi1 * -test
Количество заранее созданных доменов не должно превышать значения "channels on SORM mediator".
abf@[ds1@ecss1#ECSS-3.16-TEST-3]:/$ sorm/set aggregate_sorm_settings add multi1 multi1 * Property "aggregate_sorm_settings" successfully changed from: to User: multi1; Password: multi1; Domains: ["*"]. [exec at: 11.03.2024 09:07:10, exec time: 187ms, otp: 24, nodes: core1@ecss1 v.3.16.3.1415] abf@[ds1@ecss1#ECSS-3.16-TEST-3]:/$ sorm/info ┌───────────────────────┬──────────────────────────────────────────────┐ │ Property │ Value │ ├───────────────────────┼──────────────────────────────────────────────┤ │aggregate_sorm_settings│User: multi1; Password: multi1; Domains: ["*"]│ │ssh_dir │/etc/ecss/ssh │ │ssh_listen_interface │0.0.0.0 │ │ssh_port │7777 │ └───────────────────────┴──────────────────────────────────────────────┘ [exec at: 11.03.2024 09:08:44, exec time: 39ms, otp: 24, nodes: core1@ecss2 v.3.16.3.1415]
При необходимости для удаления записи СОРМ-концентратор используется команда:
выполняется в CoCon
sorm/set aggregate_sorm_settings remove <User>
где:
- <User> — имя пользователя подсистемы СОРМ-концентратор.
Настройка локальных параметров СОРМ-домена
В каждом домене, используемом подсистемой СОРМ-концентратор, необходимо включить функциональность СОРМ и настроить взаимодействие с СОРМ-посредником.
Для включения функциональности СОРМ используется параметр "enabled", которому необходимо установить значение "true".
Параметр настраивается командой:
выполняется в CoCon
domain/<DOMAIN_N>/sorm/set enabled true
где:
- <DOMAIN_N> — имя локального или центрального домена.
Для взаимодействия с СОРМ-посредником в каждом домене добавляем RADIUS-сервер и секретный ключ для взаимодействия с ним. IP-адрес СОРМ-посредника является IP-адресом RADIUS-сервера.
RADIUS-сервер добавляется командой:
выполняется в CoCon
domain/<DOMAIN_N>/sorm/set radius_servers add <IP address> <secret>
где:
- <DOMAIN_N> — имя локального или центрального домена;
- <IP address> — IP-адрес RADIUS-сервера;
- <secret> — секретный ключ для доступа к RADIUS-серверу.
Конфигурация отобразится следующим образом:
abf@[megaco1@ecss1#ECSS-3.16-TEST-3]:/$ domain/Local32/sorm/info ┌─────────────────────────────┬───────┬────────────────────────┐ │ Property │Domain │ Value │ ├─────────────────────────────┼───────┼────────────────────────┤ │adaptation │Local32│undefined │ │b_digits_mode │Local32│user │ │b_no_ni_check │Local32│false │ │city_prefix_70 │Local32│9 │ │enabled │Local32│true │ │full_dial_number │Local32│true │ │password │Local32│ │ │platform_id │Local32│999 │ │prikaz │Local32│268 │ │private_phone_prefix │Local32│791312 │ │radius_servers │Local32│"10.0.20.154": "1234567"│ │send_optional_cf_notification│Local32│false │ │strict_intercity_numbers │Local32│true │ │strict_private_numbers │Local32│false │ └─────────────────────────────┴───────┴────────────────────────┘ [exec at: 12.03.2024 12:39:33, exec time: 121ms, otp: 24, nodes: core1@ecss1 v.3.16.3.1459] abf@[megaco1@ecss1#ECSS-3.16-TEST-3]:/$ domain/test_domain//sorm/info ┌─────────────────────────────┬───────────┬────────────────────────┐ │ Property │ Domain │ Value │ ├─────────────────────────────┼───────────┼────────────────────────┤ │adaptation │test_domain│sorm │ │b_digits_mode │test_domain│user │ │b_no_ni_check │test_domain│false │ │city_prefix_70 │test_domain│9 │ │enabled │test_domain│true │ │full_dial_number │test_domain│true │ │password │test_domain│ │ │platform_id │test_domain│999 │ │prikaz │test_domain│268 │ │private_phone_prefix │test_domain│791312 │ │radius_servers │test_domain│"10.0.20.154": "1234567"│ │send_optional_cf_notification│test_domain│false │ │strict_intercity_numbers │test_domain│true │ │strict_private_numbers │test_domain│false │ └─────────────────────────────┴───────────┴────────────────────────┘ [exec at: 12.03.2024 12:48:01, exec time: 36ms, otp: 24, nodes: core1@ecss1 v.3.16.3.1459]
Выполните проверку:
abf@[megaco1@ecss1#ECSS-3.16-TEST-3]:/$ sorm/check-connection Local32 Success: there are 2 connections to the SORM adapter: SORM IP: 10.0.20.154 SORM IP: 10.0.20.154 [exec at: 12.03.2024 12:54:52, exec time: 39ms, otp: 24, nodes: core1@ecss1 v.3.16.3.1459] abf@[megaco1@ecss1#ECSS-3.16-TEST-3]:/$ sorm/check-connection test_domain Success: there are 2 connections to the SORM adapter: SORM IP: 10.0.20.154 SORM IP: 10.0.20.154 [exec at: 12.03.2024 12:55:20, exec time: 51ms, otp: 24, nodes: core1@ecss2 v.3.16.3.1459]
Создание контекстов маршрутизации
Декларация бриджей
Для взаимодействия между доменами необходимо создать бриджи.
Бридж декларируется командой:
/bridge/declare <name> <strict> <bandwidth> <DOMAIN_A> <np_a> <iface_a> <tg_a> <routing_ctx_a> <DOMAIN_B> <np_b> <iface_b> <tg_b> <routing_ctx_b>
- <name> — уникальное имя bridge-интерфейса (строка, без пробелов) в рамках ECSS-10;
- <strict> — режим проверки номеров, проходящих через бридж:
- true — проверка включена (при вызове из <DOMAIN_A> -> <DOMAIN_B> будет проверка, что номер абонента B существует в плане нумерации <NP_B> в домене B; при вызове из <DOMAIN_B> -> <DOMAIN_A> будет проверка, что номер абонента А существует в плане нумерации <NP_B> домена B);
- false — проверка выключена.
- <bandwidth> — количество одновременно активных вызовов на заданном bridge-интерфейсе, принимает значения:
- любое положительное число;
- unbounded — количество не ограничено;
- In/Out/Total — количество входящий/исходящий/общее.
- <DOMAIN_A> / <DOMAIN_B> — имя первой/второй виртуальной АТС, с которой устанавливает соединение bridge;
- <np_a> / <np_b> — план нумерации первой/второй виртуальной АТС, с которой устанавливает соединение bridge;
- <iface_a> / <iface_b> — имя интерфейса первой/второй виртуальной АТС, через который будет осуществляться взаимодействие с bridge-интерфейсом;
- <tg_a> / <tg_b> — идентификатор транк-группы для интерфейса первой/второй виртуальной АТС;
- <routing_ctx_a> / <routing_ctx_b> — контекст маршрутизации по умолчанию для интерфейса первой/второй виртуальной АТC.
Второй вариант — создание бриджа через веб-интерфейс (приложение Менеджер бриджей):
Для каждого домена создатйте контексты маршрутизации, в которых учесть планируемую нумерацию и имена бриджей для взаимодействия между центральным и локальными доменами.
Созданные контексты импортируются командой:
domain/DOMAIN_N/routing/import <host> <file>
- <host> — имя хоста, на котором необходимо импортировать шаблон контекста маршрутизации;
- <file> — имя файла с шаблоном контекста маршрутизации, который необходимо установить.
Либо создайте правила маршрутизации через веб-интерфейс с использованием приложения Менеджер маршрутизации:
Пример настройки базы данных для проверки подсистемы СОРМ-концентратор
Декларируйте домены с помощью команды:
выполняется в CoCondomain/declare test_domain domain/declare Local32 domain/declare Local52
Или через веб-интерфейс:
Настройте сеть для работы протокола SIP (IP_SET voip.local.set1 создан ранее):
выполняется в CoCondomain/Local22/sip/network/set ip_set [local22] domain/Local32/sip/network/set ip_set [local32] domain/local52/sip/network/set ip_set [local52] domain/test_domain/sip/network/set ip_set [test_set]
В центральном домене настройте SIP-транк с именем trunkА на городское направление. IP-адрес городской АТС — 10.0.20.31, протокол SIP работает на порте 5060:
выполняется в CoCondomain/test_domain/trunk/sip/declare default_routing sip trunkA test_set static 10.0.20.31 5060 sip-proxy 5060
Создайте локальных пользователей в доменах Local22/Local32/Local52:
выполняется в CoCondomain/Local22/sip/user/declare default_routing subscriber 22003@local22 alias-as-user qop_authentication login-as-user 22003 domain/Local22/sip/user/declare default_routing subscriber 22005@local22 alias-as-user qop_authentication login-as-user 22005 domain/Local32/sip/user/declare default_routing subscriber 32003@local32 alias-as-user qop_authentication login-as-user 32003 domain/Local32/sip/user/declare default_routing subscriber 32005@local32 alias-as-user qop_authentication login-as-user 32005 domain/Local52/sip/user/declare default_routing subscriber 52003@local52 alias-as-user qop_authentication login-as-user 52003 domain/Local52/sip/user/declare default_routing subscriber 52005@local52 alias-as-user qop_authentication login-as-user 52005
Декларируйте пользователя СОРМ-посредника с именем multi1 и паролем multi1 для работы с СОРМ-концентратором. В подсистему включены два домена (ограничено лицензией, параметром channels on SORM mediator=2):
выполняется в CoConsorm/set aggregate_sorm_settings add multi1 multi1 test_domain Local32
Настройте взаимодействие с СОРМ-посредником (IP-адрес — 10.0.20.154, секретный ключ — 1234567) для всех доменов:
выполняется в CoCondomain/Local32/sorm/set enabled true domain/Local32/sorm/set radius_servers add 10.0.20.154 1234567 domain/test_domain/sorm/set enabled true domain/test_domain/sorm/set radius_servers add 10.0.20.154 1234567
- Создайте контексты маршрутизации с учетом планируемой нумерации («791312????» — полные номера абонентов и «8??????????» — городские номера) и планируемых имен бриджей (bridge:32a, bridge:52a, bridge:32b). Импортируйте контексты маршрутизации.
Для домена test_domain
default_routing.xml<?xml version="1.0" encoding="UTF-8"?>
<context xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="ecss_routing.xsd" name="default_routing" digitmap="(*[0-9*][0-9*].#|#[0-9*][0-9*].#|*#[0-9*][0-9*].#|1xx.|10xx.)">
<rule name="local32">
<conditions>
<cgpn digits="?????"/>
<cdpn digits="32???"/>
</conditions>
<actions>
<cgpn digits="791312{1,2,3,4,5}"/>
</actions>
<result>
<external>
<trunk value="bridge:32a"/>
</external>
</result>
</rule>
<rule name="32_11n">
<conditions>
<cgpn digits="?????"/>
<cdpn digits="7913123????"/>
</conditions>
<actions>
<cgpn digits="791312{1,2,3,4,5}"/>
<cdpn digits="{7,8,9,10,11}"/>
</actions>
<result>
<external>
<trunk value="bridge:32a"/>
</external>
</result>
</rule>
<rule name="local52">
<conditions>
<cgpn digits="?????"/>
<cdpn digits="52???"/>
</conditions>
<actions>
<cgpn digits="791312{1,2,3,4,5}"/>
</actions>
<result>
<external>
<trunk value="bridge:52a"/>
</external>
</result>
</rule>
<rule name="52_11n">
<conditions>
<cgpn digits="?????"/>
<cdpn digits="7913125????"/>
</conditions>
<actions>
<cgpn digits="791312{1,2,3,4,5}"/>
<cdpn digits="{7,8,9,10,11}"/>
</actions>
<result>
<external>
<trunk value="bridge:52a"/>
</external>
</result>
</rule>
<rule name="trunkA">
<conditions>
<cgpn digits="?????"/>
<cdpn digits="8%"/>
</conditions>
<actions>
<cgpn nai="nationalNumber" digits="91312{1,2,3,4,5}" ni="private"/>
<cdpn digits="{%}" nai="nationalNumber" ni="intercity"/>
</actions>
<result>
<external>
<trunk value="trunkA"/>
</external>
</result>
</rule>
</contextДля домена Local32
Local32.xml<?xml version="1.0" encoding="UTF-8"?> <context xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="ecss_routing.xsd" name="default_routing" digitmap="(*[0-9*][0-9*].#|#[0-9*][0-9*].#|*#[0-9*][0-9*].#|1xx.|10xx.)"> <rule name="local_calls"> <conditions> <cdpn digits="32????"/> </conditions> <result> <local/> </result> </rule> <rule name="central"> <conditions> <cdpn digits="%"/> </conditions> <result> <external> <trunk value="bridge:32b"/> </external> </result> </rule> </context>
выполняется в CoCondomain/Local32/routing/import ecss1 Local32.xml domain/test_domain/routing/import ecss1 default_routing.xml
Декларируйте бриджи:
выполняется в CoConbridge/declare Local32 false unbounded test_domain test bridge:32a tg:32 default_routing Local32 default bridge:32b tg:32 default_routing bridge/declare Local22 false unbounded test_domain test bridge:22a tg:22 default_routing Local22 default bridge:22b tg:22 default_routing bridge/declare Local52 false unbounded test_domain test bridge:52a tg:52 default_routing Local52 default bridge:52b tg:52 default_routing