Просмотр настроек медиарегистратора и его состояния
Для получения информации по текущим настройкам медиарегистратора необходимо выполнить команду:
/system/media/registrar/info
В результате получаем текущие значения:
admin@[megaco1@ecss1]:/$ system/media/registrar/info Common parameters: ┌───────────────────────────┬───────┐ │ Parameter │ Value │ ├───────────────────────────┼───────┤ │ registration-timeout, sec │ 60 │ └───────────────────────────┴───────┘ Private parameters: ┌─────────────┬────────┬───────────┬────────────────────┬─────────────┐ │ Node │ Status │ Is-active │ Listen-interface │ Listen-port │ ├─────────────┼────────┼───────────┼────────────────────┼─────────────┤ │ core1@ecss1 │ active │ true │ eth0(192.168.23.9) │ 5000 │ │ core1@ecss2 │ active │ true │ eth0(192.168.23.2) │ 5000 │ └─────────────┴────────┴───────────┴────────────────────┴─────────────┘ [exec at: 22.03.2016 13:04:08, exec time: 30ms, nodes: core1@ecss1]
Изменение настроек медиарегистратора выполняется командами:
/system/media/registrar/set common <common parameter> <value>
/system/media/registrar/set private <node name> <private parameter> <value>
Где
- common - тип выставляемого параметра;
- <common parameter> - общий параметр медиарегистратора для всех нод: registration-timeout;
- private - тип выставляемого параметра;
- <node name> - имя ноды на которой находится медиарегистратор;
- <private parameter> - параметр медиарегистратора, который выставляется на <node name>: is-active, listen-interface & listen-port.
Cписок параметров доступных для настройки:
- is-active - позволяет включить или выключить регистратор (false - деактивирует регистратор, регистратор перестает принимать SIP трафик);
- listen-interface - имя интерфейса, который использует регистратор;
- listen-port - порт, на котором регистратор принимает запросы на регистрацию (по умолчанию 5000);
- registration-timeout - таймер перерегистрации, диапазон значений от 60 до 86400.
Команды для установки значений параметров по умолчанию:
/system/media/registrar/clean common <common parameter>
/system/media/registrar/clean private <node name> <private parameter>
Получение списка медиасерверов
Команда для просмотра списка медиаресурсов в системе ECSS-10.
Путь команды:
system/media/resource/list
Синтаксис:
list [active | all | register]
Параметры:
- active - отображать только активные медиаресурсы (по умолчанию);
- register - отображать только зарегистрированные медиаресурсы;
- all - отображать все задекларированные медиаресурсы);
- short - короткий вывод состояния медиареурсов.
Примеры:
admin@mycelium1@ecss1:/$ system/media/resource/list active Active media resource selected list specific: ┌─────────────┬───────┬────────────┬───────────┬──────┬────────┬───────────┬────────────┬───────────────────┬───────────┬──────────────┬────────┬─────────┬───────┬─────────────────┬────────────┬─────────┐ │ Node │ MSR │ MSR │ MSR │ MSR │ Cc-id │ Cc-status │ Cc-uptime │ Cc-address │ Iface │ Iface │ Active │ Zone │ Site │ Contact │ Status │ Expired │ │ │ │ version │ perf coef │ load │ │ │ │ │ name │ addr │ │ │ │ │ │ │ ├─────────────┼───────┼────────────┼───────────┼──────┼────────┼───────────┼────────────┼───────────────────┼───────────┼──────────────┼────────┼─────────┼───────┼─────────────────┼────────────┼─────────┤ │ core1@ecss1 │ msr_1 │ 3.11.4.23 │ 2.0 │ 0 │ 22abcd │ connected │ 2 00:10:45 │ 192.168.2.21:5700 │ bond1.2 │ 192.168.2.21 │ true │ default │ local │ bond1.2@msr_1 │ registered │ 63 │ │ │ msr_2 │ 3.11.4.23 │ 1.0 │ 0 │ c5b9d8 │ connected │ 1 00:10:38 │ 192.168.2.22:5700 │ bond1.2 │ 192.168.2.22 │ true │ default │ local │ bond1.2@msr_2 │ registered │ 64 │ │ core1@ecss2 │ msr_1 │ 3.11.4.23 │ 2.0 │ 0 │ 22abcd │ connected │ 12:05:30 │ 192.168.2.21:5700 │ bond1.2 │ 192.168.2.21 │ true │ default │ local │ bond1.2@msr_1 │ registered │ 34 │ │ │ msr_2 │ 3.11.4.23 │ 1.0 │ 0 │ c5b9d8 │ connected │ 12:05:30 │ 192.168.2.22:5700 │ bond1.2 │ 192.168.2.22 │ true │ default │ local │ bond1.2@msr_2 │ registered │ 35 │ └─────────────┴───────┴────────────┴───────────┴──────┴────────┴───────────┴────────────┴───────────────────┴───────────┴──────────────┴────────┴─────────┴───────┴─────────────────┴────────────┴─────────┘ [exec at: 22.07.2019 10:00:56, exec time: 26ms, nodes: core1@ecss2]
Корткий вывод списка
admin@mycelium1@ecss1:/$ system/media/resource/list short Active media resource selected list specific: ┌─────────────┬───────┬────────────┬───────────┬────────────┐ │ Node │ MSR │ MSR │ Cc-status │ Cc-uptime │ │ │ │ version │ │ │ ├─────────────┼───────┼────────────┼───────────┼────────────┤ │ core1@ecss1 │ msr_1 │ 3.11.4.23 │ connected │ 2 00:12:08 │ │ │ msr_2 │ 3.11.4.23 │ connected │ 1 00:12:02 │ │ core1@ecss2 │ msr_1 │ 3.11.4.23 │ connected │ 12:06:53 │ │ │ msr_2 │ 3.11.4.23 │ connected │ 12:06:53 │ └─────────────┴───────┴────────────┴───────────┴────────────┘ [exec at: 22.07.2019 10:02:19, exec time: 14ms, nodes: core1@ecss2
Для запроса списка всех известных системе медиасерверов (зарегистрированных, дерегистрированных и сконфигурированных:
admin@mycelium1@ecss1:/$ system/media/resource/list all All media resource selected list specific: ┌─────────────┬───────┬────────────┬───────────┬──────┬────────┬───────────┬────────────┬───────────────────┬───────────────┬──────────────┬────────┬─────────┬───────┬─────────────────────┬────────────┬─────────┐ │ Node │ MSR │ MSR │ MSR │ MSR │ Cc-id │ Cc-status │ Cc-uptime │ Cc-address │ Iface │ Iface │ Active │ Zone │ Site │ Contact │ Status │ Expired │ │ │ │ version │ perf coef │ load │ │ │ │ │ name │ addr │ │ │ │ │ │ │ ├─────────────┼───────┼────────────┼───────────┼──────┼────────┼───────────┼────────────┼───────────────────┼───────────────┼──────────────┼────────┼─────────┼───────┼─────────────────────┼────────────┼─────────┤ │ core1@ecss1 │ msr_1 │ 3.11.4.23 │ 2.0 │ 0 │ 22abcd │ connected │ 2 00:10:38 │ 192.168.2.21:5700 │ bond1.2 │ 192.168.2.21 │ true │ default │ local │ bond1.2@msr_1 │ registered │ 70 │ │ │ │ │ │ │ │ │ │ │ bond1.2:SIP61 │ 192.168.2.61 │ false │ │ │ bond1.2:SIP61@msr_1 │ registered │ 69 │ │ │ │ │ │ │ │ │ │ │ bond1.2:SIP62 │ 192.168.2.62 │ false │ │ │ bond1.2:SIP62@msr_1 │ registered │ 69 │ │ │ │ │ │ │ │ │ │ │ bond1.2:TC │ 192.168.2.63 │ false │ │ │ bond1.2:TC@msr_1 │ registered │ 67 │ │ │ │ │ │ │ │ │ │ │ bond1.3:MYSQL │ 192.168.1.71 │ false │ │ │ bond1.3:MYSQL@msr_1 │ registered │ 68 │ │ │ │ │ │ │ │ │ │ │ bond1.3 │ 192.168.1.21 │ false │ │ │ bond1.3@msr_1 │ registered │ 72 │ │ │ │ │ │ │ │ │ │ │ bond1.476 │ 10.16.33.5 │ true │ default │ local │ bond1.476@msr_1 │ registered │ 71 │ │ │ │ │ │ │ │ │ │ │ lo │ 127.0.0.1 │ false │ │ │ lo@msr_1 │ registered │ 72 │ │ │ msr_2 │ 3.11.4.23 │ 1.0 │ 0 │ c5b9d8 │ connected │ 1 00:10:32 │ 192.168.2.22:5700 │ bond1.2 │ 192.168.2.22 │ true │ default │ local │ bond1.2@msr_2 │ registered │ 71 │ │ │ │ │ │ │ │ │ │ │ bond1.2:SIP61 │ 192.168.2.61 │ false │ │ │ bond1.2:SIP61@msr_2 │ registered │ 70 │ │ │ │ │ │ │ │ │ │ │ bond1.2:SIP62 │ 192.168.2.62 │ false │ │ │ bond1.2:SIP62@msr_2 │ registered │ 69 │ │ │ │ │ │ │ │ │ │ │ bond1.3 │ 192.168.1.22 │ false │ │ │ bond1.3@msr_2 │ registered │ 71 │ │ │ │ │ │ │ │ │ │ │ bond1.476 │ 10.16.33.6 │ false │ │ │ bond1.476@msr_2 │ registered │ 72 │ │ │ │ │ │ │ │ │ │ │ lo │ 127.0.0.1 │ false │ │ │ lo@msr_2 │ registered │ 71 │ │ core1@ecss2 │ msr_1 │ 3.11.4.23 │ 2.0 │ 0 │ 22abcd │ connected │ 12:05:24 │ 192.168.2.21:5700 │ bond1.2 │ 192.168.2.21 │ true │ default │ local │ bond1.2@msr_1 │ registered │ 41 │ │ │ │ │ │ │ │ │ │ │ bond1.2:SIP61 │ 192.168.2.61 │ false │ │ │ bond1.2:SIP61@msr_1 │ registered │ 43 │ │ │ │ │ │ │ │ │ │ │ bond1.2:SIP62 │ 192.168.2.62 │ false │ │ │ bond1.2:SIP62@msr_1 │ registered │ 42 │ │ │ │ │ │ │ │ │ │ │ bond1.2:TC │ 192.168.2.63 │ false │ │ │ bond1.2:TC@msr_1 │ registered │ 42 │ │ │ │ │ │ │ │ │ │ │ bond1.3:MYSQL │ 192.168.1.71 │ false │ │ │ bond1.3:MYSQL@msr_1 │ registered │ 43 │ │ │ │ │ │ │ │ │ │ │ bond1.3 │ 192.168.1.21 │ false │ │ │ bond1.3@msr_1 │ registered │ 39 │ │ │ │ │ │ │ │ │ │ │ bond1.476 │ 10.16.33.5 │ false │ │ │ bond1.476@msr_1 │ registered │ 40 │ │ │ │ │ │ │ │ │ │ │ lo │ 127.0.0.1 │ false │ │ │ lo@msr_1 │ registered │ 40 │ │ │ msr_2 │ 3.11.4.23 │ 1.0 │ 0 │ c5b9d8 │ connected │ 12:05:24 │ 192.168.2.22:5700 │ bond1.2 │ 192.168.2.22 │ true │ default │ local │ bond1.2@msr_2 │ registered │ 42 │ │ │ │ │ │ │ │ │ │ │ bond1.2:SIP61 │ 192.168.2.61 │ false │ │ │ bond1.2:SIP61@msr_2 │ registered │ 42 │ │ │ │ │ │ │ │ │ │ │ bond1.2:SIP62 │ 192.168.2.62 │ false │ │ │ bond1.2:SIP62@msr_2 │ registered │ 41 │ │ │ │ │ │ │ │ │ │ │ bond1.3 │ 192.168.1.22 │ false │ │ │ bond1.3@msr_2 │ registered │ 42 │ │ │ │ │ │ │ │ │ │ │ bond1.476 │ 10.16.33.6 │ false │ │ │ bond1.476@msr_2 │ registered │ 40 │ │ │ │ │ │ │ │ │ │ │ lo │ 127.0.0.1 │ false │ │ │ lo@msr_2 │ registered │ 41 │ └─────────────┴───────┴────────────┴───────────┴──────┴────────┴───────────┴────────────┴───────────────────┴───────────────┴──────────────┴────────┴─────────┴───────┴─────────────────────┴────────────┴─────────┘ [exec at: 22.07.2019 10:00:49, exec time: 29ms, nodes: core1@ecss2]
Порядок операций:
Вариант 1.
- MSR сам регистрируется на медиарегистраторе.
- Просматриваются списки всех зарегистрированных MSR и настраиваются те, которые не привязаны к Zone(NID) и site. После чего производится их активация.
Вариант 2.
- Производится преднастройка MSR, если известны все их параметры.
- После того как MSR зарегистрировался и все параметры совпали, он автоматически становится активным.
- Этот вариант позволяет делать предварительно настроенные конфигурации (в том числе конфигурации по умолчанию).
Получение информации о медиасервере
Команда для просмотра информации о состоянии подключения конкретного медиаресурса.
Путь команды:
system/media/resource/info
Синтаксис:
info <contact uri>
Параметры:
<contact> - contact uri декларируемого медиаресурса.
Пример:
admin@mycelium1@ecss1:/$ system/media/resource/info core1@ecss1 bond1.2@msr_2 Media resource specific for node core1@ecss1: ┌─┬─────────────────┬───────────────────────┐ │F│ Parameter │ Value │ ├─┼─────────────────┼───────────────────────┤ │r│ Contact │ bond1.2@msr_2 │ │r│ Status │ registered │ │r│ Cc-status │ connected │ │r│ Cc-status uptime│ 1 00:08:48 │ │r│ Cc-id │ c5b9d8 │ │r│ Address │ 192.168.2.22:5700 │ │r│ Register time │ 2019/07/22 09:58:30 │ │r│ Expired │ 55 │ │r│ Iface │ bond1.2(192.168.2.22) │ │ │ Active │ true │ │ │ Zone │ default │ │ │ Site │ local │ │r│ MSR version │ 3.11.4.23 │ │r│ MSR load │ 0 │ │r│ MSR perf coef │ 1.0 │ └─┴─────────────────┴───────────────────────┘ Legend: Column F - means Flag, values r - flag for readonly parameter [exec at: 22.07.2019 09:59:05, exec time: 17ms, nodes: core1@ecss2
Изменение параметров медиасервера
Команда для изменения настроек медиаресурсов.
Путь команды:
system/media/resource/set
Синтаксис:
set <node|*> <contact> <active|zone|site> <value>
Параметры:
<node|*> - имя ноды;
<contact> - contact uri декларируемого медиаресурса;
<active|zone|site> - активация | зона | сайт;
<value> - значение параметра.
Пример:
admin@[mycelium1@ecss1]:/$ system/media/resource/set * bond1.476:SIP11@msr_1 active true Media resource: ┌─────────────┬───────────────────────┬──────────┬───────┐ │ Node │ Contact │ Property │ Value │ ├─────────────┼───────────────────────┼──────────┼───────┤ │ core1@ecss2 │ bond1.476:SIP11@msr_1 │ active │ true │ │ core1@ecss1 │ bond1.476:SIP11@msr_1 │ active │ true │ └─────────────┴───────────────────────┴──────────┴───────┘ [exec at: 17.02.2019 12:43:15, exec time: 126ms, nodes: core1@ecss2]
Добавление конфигурации медиасервера
Для работы в режиме предварительно настроенной системы можно заранее прописать медиаресурсы, информация о которых известна.
Для этого необходимо создать описание известных медиасерверов с указанием всех параметров, что позволить начать работу с медиасервером сразу после его регистрации.
Команда для объявления подключения медиасервера к ECSS-10.
Путь команды:
system/media/resource/declare
Синтаксис:
declare <node> by_contact <contact> <zone> <site> <is active>
или
declare <node> iface <msr> <iface> <zone> <site> <is active>
Параметры:
<node> - имя ноды core;
<contact> - contact uri декларируемого медиа ресурса;
<zone> - логическая зона обслуживания MSR;
<site> - идентификатор сети обслуживания MSR;
<is active> - состояние активности медиа-ресурса, значения true/false;
<msr> - имя MSR;
<iface> - название интерфейса.
Пример:
admin@mycelium1@ecss1:/$ system/media/resource/declare core1@ecss1 iface msr_1 bond1.476 default local true Declared media resources ┌─────────────┬─────────────────┬────────┬─────────┬───────┐ │ Node │ Contact │ Active │ Zone │ Site │ ├─────────────┼─────────────────┼────────┼─────────┼───────┤ │ core1@ecss1 │ bond1.476@msr_1 │ true │ default │ local │ └─────────────┴─────────────────┴────────┴─────────┴───────┘ [exec at: 22.07.2019 09:58:00, exec time: 50ms, nodes: core1@ecss1
Удаление конфигурации медиасервера
Команда для удаления информации о настройках медиаресурса, добавленных ранее в ECSS-10.
Путь команды:
system/media/resource/remove
Синтаксис:
remove <node> contact <contact> | msr <msr>
Параметры:
<node> - имя ноды;
<contact> - contact uri декларируемого медиаресурса;
<msr> - имя MSR.
Пример:
Пример удаления аккаунтов медиасервера по sip-uri:
admin@mycelium1@ecss1:/$ system/media/resource/remove core1@ecss1 contact bond1.476@msr_1 Media resource with contact(bond1.476@msr_1) deleted at nodes: core1@ecss1 [exec at: 22.07.2019 10:04:00, exec time: 41ms, nodes: core1@ecss2]
Пример удаления аккаунтов медиасервера по domain:
/system/media/resourse/remove core1@ecss1 domain msr1 Deleted media resources: ┌──────────────────┬─────────────┐ │ Sip-uri │ Node │ ├──────────────────┼─────────────┤ │ eth1;ecss1@msr1 │ core1@ecss1 │ │ vlan2;ecss1@msr1 │ core1@ecss1 │ │ vlan3;ecss1@msr1 │ core1@ecss1 │ └──────────────────┴─────────────┘
Просмотр списка сайтов
команда просмотра списка сайтов:
/system/site/list
По умолчанию в системе существует неудаляемый сайт: core-site
Пример результатов выполнения команды:
List of all sites: core-site remote-office test
Декларация нового сайта
Команда для декларирования нового сайта:
/system/site/declare SITE-NAME
Имя сайта в системе должно быть уникальным. Если будет попытка создания сайта с уже используемым именем, команда вернет ошибку.
Пример декларации нового сайта:
>/system/site/declare test-office Site: test-office Created successfully.
Удаление сайта
Команда для удаления сайта и всей информации о нем (данные о связности в матрице связности):
/sytem/site/remove SITE-NAME
Пример удаления сайта:
>/system/site/remove test-office Site: test-office Removed successfully.
Просмотр матрицы связности
Команда для просмотра матрицы связности:
/system/site/matrix [SITE-NAME [SITE-NAME]]
Для просмотра всей матрицы выполняем команду без параметров. При этом будет отображены все сайты если их число не превышает 20, если их число больше, то отображаются первые 20 (сортировка по алфавиту).
>/system/site/matrix Site matrix: ┌───────────────┬───┬───┬───┬───┬───┐ │ Site-name │ # │ 1 │ 2 │ 3 │ 4 │ ├───────────────┼───┼───┼───┼───┼───┤ │ core-site │ 1 │ 0 │ 3 │ │ │ ├───────────────┼───┼───┼───┼───┼───┤ │ remote-office │ 2 │ 3 │ 0 │ 1 │ │ ├───────────────┼───┼───┼───┼───┼───┤ │ test │ 3 │ │ 1 │ 0 │ 2 │ ├───────────────┼───┼───┼───┼───┼───┤ │ test-office │ 4 │ │ │ 2 │ 0 │ └───────────────┴───┴───┴───┴───┴───┘
Вывод матрицы связности по отношению к заданному сайту:
>/system/site/matrix core-site Partial site matrix for core-site: ┌───────────────┬───┬───┐ │ site-name │ # │ 1 │ ├───────────────┼───┼───┤ │ core-site │ 1 │ 0 │ ├───────────────┼───┼───┤ │ remote-office │ 2 │ 3 │ └───────────────┴───┴───┘
Вывод подматрицы связности для выбранных сайтов (не более 20 сайтов):
>/system/site/matrix core-site test Site matrix: ┌───────────────┬───┬───┬───┐ │ site-name │ # │ 1 │ 3 │ ├───────────────┼───┼───┼───┤ │ core-site │ 1 │ 0 │ │ ├───────────────┼───┼───┼───┤ │ remote-office │ 2 │ 3 │ 1 │ ├───────────────┼───┼───┼───┤ │ test │ 3 │ │ 0 │ ├───────────────┼───┼───┼───┤ │ test-office │ 4 │ │ 2 │ └───────────────┴───┴───┴───┘
Установка "расстояния" между сайтами
По умолчанию, когда создаются сайты связность между ними задается как бесконечность (infinity).
Для установки требуемого расстояния между сайтами необходимо выполнить команду:
/system/site/set-distance SITE-NAME SITE-NAME DISTANCE
Пример установки расстояния между сайтами:
>/system/site/set-distance core-site test 5 Distance between core-site and test changed to: 5.
Алгоритм определения ресурсов
Алгорим который использует ядро для поиска подходящего MSR эквивалентен следующему:
- Для заданного UA пользователя (далее просто UA), который будет парковаться на MSR определяются связанные с ним параметры Zone, Site, и опционально msr_id (если информация о нем присутствует);
- Для ядра, на котором обслуживается текущий коллпроцесс выполняется поиск зарегистрированных(поле Status = registered), административно разрешенных(поле Active = true)Ч, c зоной(Zone) UA контактов MSR;
- Из найденных контактов выбираются те, которые соответствуют известному msr_id (если он все таки задан, в противном случае подходят все контакты предыдущего шага);
- Далее выбранные контакты ранжируются по расстоянию между site UA и site самого контакта в соответствии с матрицей связанности:
admin@[restfs1@IBM]:/$ system/media/site/matrix ┌───────────┬───┬────┬────┬────┬───┐ │ Site-name │ # │ 1 │ 2 │ 3 │ 4 │ ├───────────┼───┼────┼────┼────┼───┤ │ local │ 1 │ 0 │ 10 │ 20 │ │ │ site_102 │ 2 │ 10 │ │ │ │ │ site_103 │ 3 │ 20 │ │ │ │ │ site_104 │ 4 │ │ │ │ 0 │ └───────────┴───┴────┴────┴────┴───┘ Legend: empty distance - infinity distance between sites. [exec at: 02.08.2017 12:19:55, exec time: 19ms, nodes: core2@IBM]
Выбираются контакты с наименьшим расстоянием;
- Контакты, полученные на предыдущем шаге, сортируем с удалением дубликатов по имени msr (поле msr_name). Получаем контакты с уникальными msr-ами. Контакты содержат информацию о загруженности msr-а и коэффициенте производительности msr-а;
- На основе контактов, полученных на предыдущем шаге, строится интервальная таблица загруженности msr с учетом коэффициента производительности:
- Верхняя граница таблицы (table_upper_bound) выставляется в 0, помещаем все контакты в очередь;
- Если очередь не пуста, то забираем контакт из очереди:
Для контакта выставляем нижнюю границу(con_bottom_bound) по формуле:
con_bottom_bound = table_upper_bound
Для контакта формируем верхнюю границу(con_upper_bound) по формуле:
(100 - con_msr_load) * con_msr_performance_coefficient
Выставляем верхнюю границу таблицы(table_upper_bound) по формуле:
table_upper_bound = table_upper_bound + con_upper_bound
- Кладем контакт в список;
- Переход к пункту 6.2;
- Если контактов в списке нет, то такое плечо UA релизится с соответствующим cause(msr не найден);
- Генерируем случайное число от 0 до table_upper_bound;
- В списке находим контакт, в границы которого попадает сгенерированное число. Найденный контакт используется для парковки данного UA на MSR.
Пример с 5 шага:
Шаг 5: Есть контакты con_1@msr_1, con_2@msr_1, con_1@msr_2, con_1@msr_3. Шаг 6: Есть контакты con_1@msr_1, con_1@msr_2, con_1@msr_3. msr_1 загружен на 55%, коэф. производительности 1.0. msr_2 загружен на 40%, коэф. производительности 0.9. msr_3 загружен на 60%, коэф. производительности 1.2. Шаг 6.1 table_upper_bound = 0, queue = [con_1@msr_1, con_1@msr_2, con_1@msr3] Шаг 6.2 take from queue = con_1@msr_1 Шаг 6.2.1 con_bottom_bound = 0 Шаг 6.2.2 con_upper_bound = (100 - 55) * 1.0 = 45 Шаг 6.2.3 table_upper_bound = 0 + 45 = 45 Шаг 6.2.4 put to list = con_1@msr_1(0-45) Шаг 6.3 переход на шаг 4.2 Шаг 6.2 take from queue = con_1@msr_2 Шаг 6.2.1 con_bottom_bound = 45 Шаг 6.2.2 con_upper_bound = (100 - 40) * 0.9 = 56 Шаг 6.2.3 table_upper_bound = 45 + 56 = 101 Шаг 6.2.4 put to list = con_1@msr_2(45-101) Шаг 6.2 take from queue = con_1@msr_3 Шаг 6.3 переход на шаг 6.2 Шаг 6.2.1 con_bottom_bound = 101 Шаг 6.2.2 con_upper_bound = (100 - 60) * 1.2 = 48 Шаг 6.2.3 table_upper_bound = 101 + 48 = 149 Шаг 6.2.4 put to list = con_1@msr_3(101-149) Шаг 6.4 list = [con_1@msr_1(0-45), con_1@msr_2(45-101), con_1@msr_3(101-149)] generate 58 Шаг 6.5 found con_1@msr_2(45-101)
Найден контакт con_1@msr_2 (msr c именем msr_2).
Пример настройки и парковки вызова
MSR регистрируют контакты со следующими параметрами:
name | zone | site | msr_id |
msr1_eth0 | rtk | r_kalininsky | 1 |
msr1_eth1 | mts | r_kalininsky | 1 |
msr2_eth0 | rtk | r_sovetsky | 2 |
msr2_eth1 | mts | r_sovetsky | 2 |
msr3_eth0 | rtk | r_kirovsky | 3 |
msr3_eth1 | mts | r_kirovsky | 3 |
Имеющаяся следующую матрицу связности:
Site-name | d | 1 | 2 | 3 | 4 | 5 | 6 |
r_kalininsky | 1 | 0 | |||||
r_sovetsky | 2 | 0 | |||||
r_kirovsky | 3 | 0 | |||||
okrujnaya | 4 | 1 | 3 | 2 | 0 | ||
molodeji | 5 | 3 | 1 | 2 | 0 | ||
titova | 6 | 2 | 2 | 1 | 0 |
Абонент UA1 хочет установить разговор с абонентом UA2, при этом они имеют следующие параметры:
UA | zone | site |
ua1 | rtk | okrujnaya |
ua2 | mts | molodeji |
Сначала паркуется плечо UA1.
Из списка активных контактов MSR выбираем все, которые принадлежат зоне rtk:
name | zone | site | msr_id |
msr1_eth0 | rtk | r_kalininsky | 1 |
msr2_eth0 | rtk | r_sovetsky | 2 |
msr3_eth0 | rtk | r_kirovsky | 3 |
Список контактов остается прежним.
Вычисляем расстояние между ua site: okrujnaya и сайтом каждого из контактов. Имеем:
distance | name | zone | site | msr_id |
1 | msr1_eth0 | rtk | r_kalininsky | 1 |
2 | msr3_eth0 | rtk | r_kirovsky | 3 |
3 | msr2_eth0 | rtk | r_sovetsky | 2 |
Контакты ранжированы в порядке увеличения дистанции. Берем первый из них и используем его для парковки UA1:
name: msr1_eth0, msr_id:1
Парковка второго плеча: ua2.
Он принадлежит другой зоне, поэтому список контактов после выбора по зоне будет выглядеть так:
name | zone | site | msr_id |
msr1_eth1 | mts | r_kalininsky | 1 |
msr2_eth1 | mts | r_sovetsky | 2 |
msr3_eth1 | mts | r_kirovsky | 3 |
На предыдущем шаге у нас определен msr_id=1.
С учетом msr_id получаем новый список контактов:
name | zone | site | msr_id |
msr1_eth1 | mts | r_kalininsky | 1 |
Далее вычисляем расстояние между ua2 site: molodeju и r_kalininsky.
distance | name | zone | site | msr_id |
1 | msr1_eth1 | mts | r_kalininsky | 1 |
В текущем примере используется довольно простая схема с MSR, поэтому для представленных условий у нас остался лишь один контакт.
Его и используем для парковки ua2.
Так как оба плеча сумели запарковаться на MSR, абоненты смогут обмениваться rtp трафиком.
Данный пример довольно простой и не иллюстрирует все способы применения заложенных возможностей и функций.
Однако базовые принципы показаны верно и их дальнейшая модификация позволит выстраивать весьма сложные схемы с территориальным тяготением голосового трафика