Подсистема MultiSORM позволяет СОРМ-ировать несколько виртуальных АТС (доменов) как одну, что позволяет скрыть от пульта СОРМ внутреннюю структуру ECSS-10.

Рисунок 1 - Организация подключения пульта СОРМ к подсистеме MultiSORM
При использовании подсистемы MultiSORM СОРМ посредник подключается к центральному домену, где авторизуется по имени и паролю. При прохождении процедуры авторизации подсистема MultiSORM проверяет конфигурацию доменов подключенных к подсистеме. Если подсистема MultiSORM не смогла подключить хотя бы один из доменов по причине, что он не существует, либо имеет некорректные настройки для взаимодействия с СОРМ посредником, то авторизация будет неуспешной даже несмотря на то, что авторизационные имя и пароль будут верными. При успешной авторизации подсистема MultiSORM переходит в режим передачи команд полученных от СОРМ посредника в подключенные домены, включая центральный. Команда транслируется сразу во все подключенные домены и если хотя бы из одного получен положительный ответ, то он передается на СОРМ посредник.
Например, от СОРМ посредника принята команда №5 «постановка на контроль». Она транслируется во все домены, подключенные к подсистеме MultiSORM и если хотя бы один домен поставил принятый в команде номер на контроль, то значит, что команда выполнена успешно. В случае, если от всех доменов получен отрицательный ответ, - на СОРМ посредник будет протранслирован отрицательный ответ.
Абоненты центрального домена ставятся на контроль по полному номеру (11 знаков начиная с семерки согласно 268 приказа) как абоненты сети (абонент сети с полным номером, междугородный), а абоненты остальных доменов, подключенных к центральному, - по локальному короткому номеру со значностью принятой в данном домене, как абоненты данной станции. Подсистема MultiSORM для своей работы требует одного ограничения - локальные номера во всех подключенных доменах должны быть уникальными, то есть номера из одного домена не должны присутствовать в других.
Маршрутизация вызовов между доменами и на внешнее городское направление осуществляется через центральный домен, а маршрутизация между абонентами домена — локально внутри домена. В результате, если вызов идет на город, абонент будет СОРМ-ироваться по полному номеру центрального домена, если вызов осуществляется внутри локального домена или между локальными доменами, то вызов будет СОРМ-ироваться по локальному короткому номеру.
При конфигурировании подсистемы MultiSORM подразумеваем, что локальные и центральный домены уже созданы. В локальных доменах созданы локальные абоненты с короткой нумерацией, а в центральном домене создан SIP-транк для выхода на городское направление.
Для подключения СОРМ посредника подсистема MultiSORM использует ssh порт, на единицу больший, чем указано в параметре ssh_port.
Параметр настраивается командой:
sorm/set ssh_port <value>
| На СОРМ посреднике в параметре Port вкладки "SORM mediator — SSH" нужно настроить значение ssh_port+1 |
Список доменов, которые будут СОРМ-ироваться и авторизационные данные пользователя подсистемы MultiSORM (имя/пароль) настраиваются командой:
sorm/set aggregate_sorm_settings add <User> <Password> <DOMAIN_1> [<DOMAIN_2> ...[<DOMAIN_N>]]
Для автоматического добавления доменов без повторной постановки абонента на контроль и без перезапуска СОРМ существуют шаблоны доменов. Задаются они следующими командами:
sorm/set aggregate_sorm_settings add test3 1234 *sorm/set aggregate_sorm_settings add test3 1234 * -test| Символ звездочка ( * ) может встречаться только один раз в шаблоне одного домена. |
При необходимости для удаления пользователя используется команда:
sorm/set aggregate_sorm_settings remove <User>
В каждом домене, используемом подсистемой MultiSORM необходимо включить функциональность СОРМ и настроить взаимодействие с СОРМ посредником.
Для включения функциональности СОРМ используется параметр enabled, которому необходимо установить значение true.
Параметр настраивается командой:
domain/DOMAIN_N/sorm/set enabled true
Для взаимодействия с СОРМ посредником в каждом домене добавляем RADIUS-сервер и секретный ключ для взаимодействия с ним. IP-адрес СОРМ посредника является IP-адресом RADIUS сервера.
RADIUS сервер добавляется командой:
domain/DOMAIN_N/sorm/set radius_servers add <IP address> <secret>
| На СОРМ посреднике в параметрах Server IP-address и Secret вкладки "SORM mediator — RADIUS" нужно настроить соответствующие значения IP адреса RADIUS-сервера и секретного ключа. |
Необходимо для каждого домена создать контексты маршрутизации, в которых учесть планируемую нумерацию и имена бриджей для взаимодействия между центральным и локальными доменами. Сами бриджи будут создаваться позже.
Созданные контексты импортируются командой:
domain/DOMAIN_N/routing/import <host> <file>
Для взаимодействия между центральным и локальными доменами необходимо создать бриджи. Для каждого домена создается один бридж для выхода на городское направление по полной нумерации и один бридж для взаимодействия между доменами через центральный домен по короткой нумерации.
Бридж декларируется командой:
/bridge/declare <name> <duplex> <strict> <capacity> <DOMAIN_A> <np_a> <iface_a> <tg_a> <routing_ctx_a> <DOMAIN_B> <np_b> <iface_b> <tg_b> <routing_ctx_b>
В каждом домене необходимо создать план нумерации. В центральном домене это делается для осуществления вызовов с городского направления в локальные домены, а в локальных доменах для осуществления вызовов на городское направление через центральный домен.
План нумерации добавляется командой:
domain/DOMAIN_N/np/declare <numplan>
Дальше необходимо добавить полные абонентские номера в план нумерации центрального домена. Данное действие выполняется командой:
domain/DOMAIN_N/np/numbers/add <numplan> <numbers>
В центральном домене необходимо присвоить полным абонентским номерам направления на локальные домены, в которых за ними будут закреплены локальные абоненты. Данное действие выполняется командой:
domain/DOMAIN_N/np/numbers/bind <numplan> <numbers> --bridge <bridge>
В локальных доменах необходимо настроить соответствия между полными и локальными номерами. Данное действие выполняется командой:
domain/DOMAIN_N/np/numbers/bind <numplan> <numbers> --alias <local_numbers> [<group> <IfaceRange>] [--master | --passive]
Декларируем домены:
domain/declare central_voip domain/declare local.voip domain/declare voip .local |
Настраиваем сеть для работы протокола SIP (IP_SET voip.local.set1 создан ранее:
domain/local.voip/sip/network/set ip_set [voip.local.set1] domain/voip.local/sip/network/set ip_set [voip.local.set1] domain/central_voip/sip/network/set ip_set [voip.local.set1] |
В центральном домене настраиваем SIP транк с именем trunk1 на городское направление. IP-адрес городской АТС 192.168.118.119, протокол SIP работает на порте 5060.
domain/central_voip/trunk/sip/declare default_routing central_voip trunk1 voip.local.set1 static 192.168.118.119 5060 sip-proxy 5060 |
Создаем локальных пользователей в доменах voip.local и local.voip:
domain/local.voip/sip/user/declare default_routing local.voip 300001@local.voip alias-as-user qop_authentication login-as-user 300001 domain/local.voip/sip/user/declare default_routing local.voip 300000@local.voip alias-as-user qop_authentication login-as-user 300000 domain/local.voip/sip/user/declare default_routing voip.local 200100@voip.local alias-as-user qop_authentication login-as-user 200100 domain/local.voip/sip/user/declare default_routing voip.local 200119@voip.local alias-as-user qop_authentication login-as-user 200119 |
Декларируем пользователя СОРМ посредника с именем multi и паролем multi для работы с мультисормом.мВ подсистему включены три домена:
sorm/set aggregate_sorm_settings add multi multi central_voip voip.local local.voip |
Настраиваем взаимодействие с СОРМ посредником (IP адрес 192.168.118.203, секретный ключ 2testing123) для всех доменов:
domain/central_voip/sorm/set enabled true domain/central_voip/sorm/set radius_servers add 192.168.118.203 2testing123 domain/local.voip/sorm/set enabled true domain/local.voip/sorm/set radius_servers add 192.168.118.203 2testing123 domain/voip .local/sorm/set enabled true domain/voip .local/sorm/set radius_servers add 192.168.118.203 2testing123 |
Для домена central_voip
<?xml version="1.0" encoding="UTF-8"?> |
<?xml version="1.0" encoding="UTF-8"?>
<context xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="ecss_routing.xsd" name="ctx_city" np="city" digitmap="(*[0-9*][0-9*].#|#[0-9*][0-9*].#|*#[0-9*][0-9*].#|1xx.|10xx.)">
<rule name="to_local_city_users">
<result>
<local/>
</result>
</rule>
</context> |
domain/central_voip/routing/import ecss1 ctx_default_routing.xml domain/central_voip/routing/import ecss1 ctx_city.xml |
Для домена local.voip
<?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="3?????"/>
<cgpn digits="??????"/>
</conditions>
<actions>
<called sorm_ni="private"/>
<calling sorm_ni="private"/>
</actions>
<result>
<local/>
</result>
</rule>
<rule name="other_departments">
<conditions>
<cdpn digits="??????"/>
<cgpn digits="3?????"/>
</conditions>
<actions>
<called sorm_ni="private"/>
<calling sorm_ni="private"/>
</actions>
<result>
<external>
<trunk value="bridge:l2c_inter"/>
</external>
</result>
</rule>
<rule name="to_city_bridge">
<conditions>
<cdpn digits="73832??????"/>
<cgpn digits="3?????"/>
</conditions>
<actions>
<called sorm_digits="{1,2,3,4,5,6,7,8,9,10,11}" sorm_ni="local"/>
<calling sorm_digits="{1,2,3,4,5,6}" sorm_ni="private"/>
</actions>
<result>
<continue context="to_city"/>
</result>
</rule>
<rule name="local_from_bridge">
<conditions>
<cdpn digits="3?????"/>
<cgpn digits="73832??????"/>
</conditions>
<actions>
<called sorm_ni="private"/>
<calling sorm_ni="local"/>
</actions>
<result>
<local/>
</result>
</rule>
</context> |
<?xml version="1.0" encoding="UTF-8"?>
<context xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="ecss_routing.xsd" name="to_city" np="city" digitmap="(*[0-9*][0-9*].#|#[0-9*][0-9*].#|*#[0-9*][0-9*].#|1xx.|10xx.)">
<rule name="to_city_bridge">
<result>
<external>
<trunk value="bridge:l2c"/>
</external>
</result>
</rule>
</context> |
<?xml version="1.0" encoding="UTF-8"?>
<context xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="ecss_routing.xsd" name="from_l2c" np="city" digitmap="(*[0-9*][0-9*].#|#[0-9*][0-9*].#|*#[0-9*][0-9*].#|1xx.|10xx.)">
<rule name="local_from_bridge">
<conditions>
<cdpn digits="73832??????"/>
<cgpn digits="73832??????"/>
</conditions>
<actions>
<called sorm_ni="private"/>
<calling sorm_ni="local"/>
</actions>
<result>
<local/>
</result>
</rule>
</context> |
domain/local.voip/routing/import ecss1 ctx_default_routing.xml domain/local.voip/routing/import ecss1 ctx_city.xml domain/local.voip/routing/import ecss1 ctx_from_bridge.xml |
Для домена voip.local
<?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>
<cgpn digits="??????"/>
<cdpn digits="2?????"/>
</conditions>
<actions>
<calling sorm_ni="private"/>
<called sorm_ni="private"/>
</actions>
<result>
<local/>
</result>
</rule>
<rule name="other_departments">
<conditions>
<cgpn digits="2?????"/>
<cdpn digits="3?????"/>
</conditions>
<actions>
<calling sorm_ni="private"/>
<called sorm_ni="private"/>
</actions>
<result>
<external>
<trunk value="bridge:v2c_inter"/>
</external>
</result>
</rule>
<rule name="to_city_bridge">
<conditions>
<cgpn digits="2?????"/>
<cdpn digits="73832??????"/>
</conditions>
<actions>
<calling sorm_digits="{1,2,3,4,5,6}" sorm_ni="private"/>
<called sorm_digits="{1,2,3,4,5,6,7,8,9,10,11}" sorm_ni="local"/>
</actions>
<result>
<continue context="to_city"/>
</result>
</rule>
<rule name="local_from_bridge">
<conditions>
<cgpn digits="73832??????"/>
<cdpn digits="2?????"/>
</conditions>
<actions>
<called sorm_ni="private"/>
<calling sorm_ni="local"/>
</actions>
<result>
<local/>
</result>
</rule>
</context> |
<?xml version="1.0" encoding="UTF-8"?>
<context xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="ecss_routing.xsd" name="to_city" np="city" digitmap="(*[0-9*][0-9*].#|#[0-9*][0-9*].#|*#[0-9*][0-9*].#|1xx.|10xx.)">
<rule name="to_city_bridge">
<result>
<external>
<trunk value="bridge:v2c"/>
</external>
</result>
</rule>
</context> |
<?xml version="1.0" encoding="UTF-8"?>
<context xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="ecss_routing.xsd" name="from_v2c" np="city" digitmap="(*[0-9*][0-9*].#|#[0-9*][0-9*].#|*#[0-9*][0-9*].#|1xx.|10xx.)">
<rule name="local_from_bridge">
<conditions>
<cgpn digits="73832??????"/>
<cdpn digits="73832??????"/>
</conditions>
<actions>
<called sorm_ni="private"/>
<calling sorm_ni="local"/>
</actions>
<result>
<local/>
</result>
</rule>
</context> |
domain/voip.local/routing/import ecss1 ctx_default_routing_multi.xml domain/voip.local/routing/import ecss1 ctx_to_city_multi.xml domain/voip.local/routing/import ecss1 ctx_from_br_multi.xml |
Декларируем бриджи:
bridge/declare c2v true true unbounded central_voip city bridge:c2v tg:c2v default_routing voip.local city bridge:v2c tg:v2c from_v2c bridge/declare c2l true true unbounded central_voip city bridge:c2l tg:c2l default_routing local.voip city bridge:l2c tg:l2c from_l2c bridge/declare c2l_inter true false unbounded central_voip default bridge:c2l_inter tg:c2l default_routing local.voip default bridge:l2c_inter tg:l2c default_routing bridge/declare c2v_inter true false unbounded central_voip default bridge:c2v_inter tg:c2v default_routing voip.local default bridge:v2c_inter tg:v2c default_routing |
Декларируем планы нумерации во всех доменах:
domain/central_voip/np/declare city domain/local.voip/np/declare city domain/voip.local/np/declare city |
Добавляем полные абонентские номера в план нумерации центрального домена:
domain/central_voip/np/numbers/add city 738327{0-1}000{0-1} |
Присваиваем абонентским номерам направления на домены, в которых за ними будут закреплены локальные абоненты:
domain/central_voip/np/numbers/bind city 7383271000{0-1} --bridge c2l
domain/central_voip/np/numbers/bind city 7383270000{0-1} --bridge c2v |
Настраиваем соответствия между полными и локальными номерами:
domain/voip.local/np/numbers/bind city 73832700000 --alias 200100 voip.local 053eb7f6f8c37df5 --master domain/voip.local/np/numbers/bind city 73832700001 --alias 200119 voip.local 053eb7fae721975f --master domain/local.voip/np/numbers/bind city 73832710000 --alias 300000 local.voip f4c06b4a996e9e6e --master domain/local.voip/np/numbers/bind city 73832710001 --alias 300001 local.voip f4c068ee409afa6c --master |