Подсистема MultiSORM

Общая работа системы

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

12.3.png

Рисунок — Организация подключения пульта СОРМ к подсистеме MultiSORM

При использовании подсистемы MultiSORM СОРМ посредник подключается к центральному домену, где авторизуется по имени и паролю. При прохождении процедуры авторизации подсистема MultiSORM проверяет конфигурацию доменов подключенных к подсистеме. Если подсистема MultiSORM не смогла подключить хотя бы один из доменов по причине, что он не существует, либо имеет некорректные настройки для взаимодействия с СОРМ-посредником, то авторизация будет неуспешной даже несмотря на то, что авторизационные имя и пароль будут верными. При успешной авторизации подсистема MultiSORM переходит в режим передачи команд полученных от СОРМ-посредника в подключенные домены, включая центральный. Команда транслируется сразу во все подключенные домены и, если хотя бы из одного получен положительный ответ, то он передается на СОРМ-посредник.

Например, от СОРМ посредника принята команда №5 «постановка на контроль». Она транслируется во все домены, подключенные к подсистеме MultiSORM и, если хотя бы один домен поставил принятый в команде номер на контроль, то значит, что команда выполнена успешно. В случае, если от всех доменов получен отрицательный ответ, на СОРМ-посредник будет протранслирован отрицательный ответ.

Абоненты центрального домена ставятся на контроль по полному номеру (11 знаков начиная с семерки согласно 268 приказа) как абоненты сети (абонент сети с полным номером, междугородний), а абоненты остальных доменов, подключенных к центральному, по локальному короткому номеру со значностью, принятой в данном домене, как абоненты данной станции. Подсистема MultiSORM для своей работы требует одного ограничениялокальные номера во всех подключенных доменах должны быть уникальными, то есть номера из одного домена не должны присутствовать в других.

Маршрутизация вызовов между доменами и на внешнее городское направление осуществляется через центральный домен, а маршрутизация между абонентами одного домена — локально внутри домена. В результате, если вызов идет на город, абонент будет СОРМироваться по полному номеру центрального домена, если вызов осуществляется внутри локального домена или между локальными доменами, то вызов будет СОРМироваться по локальному короткому номеру.

Конфигурирование подсистемы MultiSORM

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

Настройка глобальных параметров СОРМ

Для подключения СОРМ-посредника подсистема MultiSORM использует ssh порт, на единицу больший, чем указано в параметре ssh_port.

На СОРМ-посреднике в параметрах "Порт" нужно настроить значения порта (ssh+1)  7778.

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

sorm/set ssh_port <value>

  • <value> — значение порта в диапазоне 1-65535. По умолчанию значение данного параметра равно 7777, то есть по умолчанию подсистема MultiSORM будет использовать порт 7778.

Для взаимодействия СОРМ посредника с программным коммутатором в режиме MultiSORM необходимо настроить следующие параметры:

  • IP-адрес сервера — IP-адрес программного коммутатора ECSS-10 для взаимодействия по протоколу SSH (ecss1);
  • Резервный IP-адрес — IP-адрес резервного программного коммутатора ECSS-10 для взаимодействия по протоколу SSH (ecss2);
  • Порт — транспортный порт протокола ТСР, открытый на хосте программного коммутатора ECSS-10 для взаимодействия с MultiSORM посредником по протоколу SSH. Для настройки работы подсистемы MultiSORM параметру необходимо указать значение, настроенное в конфигурации программного коммутатора+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
BASH

Значение параметра SORM "enabled" должно быть "true". Количество каналов "channels on SORM mediator" указывает количество доменов, которые могут быть добавлены в группу СОРМирования:

SORM                                                  
 enabled                                              true
 channels on SORM mediator                            2

В текущем примере можно добавить только два домена.

Список доменов, которые будут СОРМироваться, и авторизационные данные пользователя подсистемы MultiSORM (имя/пароль) настраиваются командой (имена доменов вносится через пробел):

выполняется в CoCon

/sorm/set aggregate_sorm_settings add <User> <Password> <DOMAIN_1> [<DOMAIN_2> ...[<DOMAIN_N>]]
BASH


sorm/set aggregate_sorm_settings add <User> <Password> <DOMAIN_1> [<DOMAIN_2> ...[<DOMAIN_N>]]

где:

  • <User> — имя пользователя подсистемы MultiSORM (должен совпадать со значением "Имя пользователя" в конфигурации СОРМ-посредник);
  • <Password>  — пароль пользователя подсистемы MultiSORM (должен совпадать со значением "Пароль" в конфигурации СОРМ-посредник);
  • <DOMAIN_1>..<DOMAIN_N> — имя локального или центрального домена.

В случае добавления большего количества доменов, чем описано в лицензии, команда выполнится, но система не сможет подключить не одного из них, и будут сгенерированы аварии по объекту СОРМ для каждого добавленного домена.

выполняется в CoCon
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.

выполняется в CoCon
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]

При необходимости для удаления записи multi_sorm используется команда:

выполняется в CoCon

sorm/set aggregate_sorm_settings remove <User>
BASH

где:

  • <User> — имя пользователя подсистемы MultiSORM.

Настройка локальных параметров СОРМ домена

В каждом домене, используемом подсистемой MultiSORM, необходимо включить функциональность СОРМ и настроить взаимодействие с СОРМ-посредником.

Для включения функциональности СОРМ используется параметр enabled, которому необходимо установить значение true.

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

выполняется в CoCon

domain/<DOMAIN_N>/sorm/set enabled true
BASH

где:

  • <DOMAIN_N> — имя локального или центрального домена.

Для взаимодействия с СОРМ-посредником в каждом домене добавляем RADIUS-сервер и секретный ключ для взаимодействия с ним. IP-адрес СОРМ-посредника является IP-адресом RADIUS-сервера.

RADIUS-сервер добавляется командой:

выполняется в CoCon

domain/<DOMAIN_N>/sorm/set radius_servers add <IP address> <secret>
BASH

где:

  • <DOMAIN_N> — имя локального или центрального домена;
  • <IP address> — IP-адрес RADIUS-сервера;
  • <secret> — секретный ключ для доступа к RADIUS-серверу.
На СОРМ-посреднике в параметрах Server IP-address и Secret вкладки "SORM mediator — RADIUS" нужно настроить соответствующие значения IP-адреса RADIUS-сервера и секретного ключа.

Отображение текущей конфигурации:

выполняется в CoCon
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]

Выполните следующую проверку:

выполняется в CoCon
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> — имя файла с шаблоном контекста маршрутизации, который необходимо установить.

Либо создайте правила маршрутизации через веб-интерфейс с использованием приложения Менеджер маршрутизации:

Пример настройки базы данных для проверки подсистемы MultiSORM

  1. Декларируйте домены с помощью команды:

    выполняется в CoCon
    domain/declare test_domain 
    domain/declare Local32 
    domain/declare Local52

    Или через веб-интерфейс:

  2. Настройте сеть для работы протокола SIP (IP_SET voip.local.set1 создан ранее):

    выполняется в CoCon
    domain/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]

  3. В центральном домене настройте SIP-транк с именем trunkА на городское направление. IP-адрес городской АТС — 10.0.20.31, протокол SIP работает на порте 5060:

    выполняется в CoCon
    domain/test_domain/trunk/sip/declare default_routing sip trunkA test_set static 10.0.20.31 5060 sip-proxy 5060

  4. Создайте локальных пользователей в доменах Local22/Local32/Local52:

    выполняется в CoCon
    domain/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 

  5. Декларируйте пользователя СОРМ-посредника с именем multi1 и паролем multi1 для работы с мультисормом. В подсистему включены два домена (ограничено лицензией, параметром channels on SORM mediator=2):

    выполняется в CoCon
    sorm/set aggregate_sorm_settings add multi1 multi1 test_domain Local32
  6. Настройте взаимодействие с СОРМ-посредником (IP-адрес — 10.0.20.154, секретный ключ — 1234567) для всех доменов:

    выполняется в CoCon
    domain/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
  7. Создайте контексты маршрутизации с учетом планируемой нумерации («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>
    выполняется в CoCon
    domain/Local32/routing/import ecss1 Local32.xml
    domain/test_domain/routing/import ecss1 default_routing.xml
  8. Декларируйте бриджи:

    выполняется в CoCon
    bridge/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