Система с одним сервером

Условия

Медиасервер установлен на том же сервере, что и SSW.
Используется один интерфейс - bond1.2, адрес 192.168.2.21.

Настройки

Конфигурационный файл для таких условий нужно привести в виду (нужно прописать адрес 192.168.2.21 вместо 127.0.0.1):

<?xml version="1.0" encoding="utf-8"?>
<config date="10:48:28 10.09.2019">
  <general log-level="3" log-rotate="yes" max-calls="8192" max-in-group="512" load-sensor="media" load-delta="10" spool-dir-size="100M" log-name="msr.log" log-path="/var/log/ecss/media-server" use-srtp="disabled"/>
  <transport bind-addr="192.168.2.21" port="5040" transport="udp+tcp"/>
  <media mixer-clock-rate="48000" use-vad="no" cng-level="0" jb-size="60" rtcp-timeout="0" rtp-timeout="350" udp-src-check="no" cn-multiplier="3" port-start="12000" port-range="1024" tias-in-sdp="no" thread-cnt="2" silence-threshold="-30" dtmf-flash-disable="no" video-dscp="0" other-dscp="0" dummy-video-src="/usr/share/ecss-media-server/video/dummy_video.yuv" video-enc-width="1280" video-enc-height="720"/>
  <codec pcma="1" pcmu="2" ilbc="0" gsm="0" g722="3" opus="1" g7221="1" g729="0" speex="0" l16="0" h264="1" h263-1998="2" t38="1" tel-event-pt="0"/>
  <accounts>
    <dynamic msr_name="msr_1" realm="sip:192.168.2.21:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password"/>
  </accounts>
  <pbyte>
    <mcc bind-addr="192.168.2.21" port="5700"/>
  </pbyte>
  <conf_dir path="/etc/ecss/ecss-media-server/conf.d"/>
</config>
XML

В настройках ECSS-10 нужно указать адрес для приема регистраций (в целях безопасности, т.к. по умолчанию соединения принимаются на всех адресах - 0.0.0.0):

support@[mycelium1@ecss1]:/$ system/media/registrar/set private core1@ecss1 listen-ip 192.168.2.21
Private parameter listen-ip set to 192.168.2.21 at node core1@ecss1.

Далее следует задекларировать медиаресурсы на интерфейсе bond1.2

support@[mycelium1@ecss1]:/$ system/media/resource/declare core1@ecss1 iface msr_1 bond1.2 default local true

Система с резервированием на двух серверах

Медиасервер, в целях резервирования медиаресурсов, должен быть установлен на каждом сервере, на котором установлено ECSS-10.

Условия

Сервер 1. Интерфейс - eth0, адрес 192.168.2.21
Сервер 2. Интерфейс - eth0, адрес 192.168.2.22

Не используйте плавающие (keepalive) адреса для медиасервера.

Настройки

На первом сервере в конфигурационном файле /etc/ecss/ecss-media-server/config.xml в качестве адреса transport bind-addr и mcc bind-addr нужно указать адрес этого же сервера, т.е. 192.168.1.1. В секции аккаунтов должны быть прописаны динамические аккаунты для первого сервера и для второго.

<?xml version="1.0" encoding="utf-8"?>
<config date="10:48:28 10.09.2019">
  <general log-level="3" log-rotate="yes" max-calls="8192" max-in-group="512" load-sensor="media" load-delta="10" spool-dir-size="100M" log-name="msr.log" log-path="/var/log/ecss/media-server" use-srtp="disabled"/>
  <transport bind-addr="192.168.2.21" port="5040" transport="udp+tcp"/>
  <media mixer-clock-rate="48000" use-vad="no" cng-level="0" jb-size="60" rtcp-timeout="0" rtp-timeout="350" udp-src-check="no" cn-multiplier="3" port-start="12000" port-range="1024" tias-in-sdp="no" thread-cnt="2" silence-threshold="-30" dtmf-flash-disable="no" video-dscp="0" other-dscp="0" dummy-video-src="/usr/share/ecss-media-server/video/dummy_video.yuv" video-enc-width="1280" video-enc-height="720"/>
  <codec pcma="1" pcmu="2" ilbc="0" gsm="0" g722="3" opus="1" g7221="1" g729="0" speex="0" l16="0" h264="1" h263-1998="2" t38="1" tel-event-pt="0"/>
  <accounts>
    <dynamic msr_name="msr_1" realm="sip:192.168.2.21:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password"/>
    <dynamic msr_name="msr_1" realm="sip:192.168.2.22:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password"/>
  </accounts>
  <pbyte>
    <mcc bind-addr="192.168.2.21" port="5700"/>
  </pbyte>
  <conf_dir path="/etc/ecss/ecss-media-server/conf.d"/>
</config
XML

На втором сервере адрес transport bind-addr и mcc bind-addr нужно указать 192.168.2.22. В секции аккаунтов задать имя MSR отличное от того, которое было задано для первого сервера, т.к. фактически настраивается отдельный второй медиасервер.

Конфигурационный файл для второго сервера должен иметь вид:

<?xml version="1.0" encoding="utf-8"?>
<config date="10:48:28 10.09.2019">
  <general log-level="3" log-rotate="yes" max-calls="8192" max-in-group="512" load-sensor="media" load-delta="10" spool-dir-size="100M" log-name="msr.log" log-path="/var/log/ecss/media-server" use-srtp="disabled"/>
  <transport bind-addr="192.168.2.22" port="5040" transport="udp+tcp"/>
  <media mixer-clock-rate="48000" use-vad="no" cng-level="0" jb-size="60" rtcp-timeout="0" rtp-timeout="350" udp-src-check="no" cn-multiplier="3" port-start="12000" port-range="1024" tias-in-sdp="no" thread-cnt="2" silence-threshold="-30" dtmf-flash-disable="no" video-dscp="0" other-dscp="0" dummy-video-src="/usr/share/ecss-media-server/video/dummy_video.yuv" video-enc-width="1280" video-enc-height="720"/>
  <codec pcma="1" pcmu="2" ilbc="0" gsm="0" g722="3" opus="1" g7221="1" g729="0" speex="0" l16="0" h264="1" h263-1998="2" t38="1" tel-event-pt="0"/>
  <accounts>
    <dynamic msr_name="msr_2" realm="sip:192.168.2.21:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password"/>
    <dynamic msr_name="msr_2" realm="sip:192.168.2.22:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password"/>
  </accounts>
  <pbyte>
    <mcc bind-addr="192.168.2.22" port="5700"/>
  </pbyte>
  <conf_dir path="/etc/ecss/ecss-media-server/conf.d"/>
</config
XML

В настройках ECSS-100 нужно указать адрес для приема регистраций (в целях безопасности, т.к. по умолчанию соединения принимаются на всех адресах - 0.0.0.0). Для каждого сервера - свой:

support@[mycelium1@ecss1]:/$ system/media/registrar/set private core1@ecss1 listen-ip 192.168.2.21
Private parameter listen-ip set to 192.168.1.1 at node core1@ecss1.
support@[mycelium1@ecss1]:/$ system/media/registrar/set private core1@ecss2 listen-ip 192.168.2.22
Private parameter listen-ip set to 192.168.1.2 at node core1@ecss2.

Далее следует задекларировать медиаресурсы каждого медиасервера на каждой ноде каждого ядра. Т.е. первый медиасервер задекларировать на обоих серверах и второй медиасервер также задекларировать на обоих серверах.

Для этого выполняются следующие команды:

/system/media/resource/declare core1@ecss1 iface msr_1 bond1.2 default local true
/system/media/resource/declare core1@ecss1 iface msr_2 bond1.2 default local true
/system/media/resource/declare core1@ecss2 iface msr_1 bond1.2 default local true
/system/media/resource/declare core1@ecss2 iface msr_2 bond1.2 default local true

В результате должно появиться четыре записи ресурсов:

admin@mycelium1@ecss1:/$ system/media/resource/list 
  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.14.0.235 │       1.0 │    0 │ 22abcd │ connected │ 03:24:08  │ 192.168.2.21:5700 │ bond1.2 │ 192.168.2.21 │ true   │ default │ local │ bond1.2@msr_1 │ registered │      75 │
│             │ msr_2 │ 3.14.0.235 │       1.0 │    0 │ c5b9d8 │ connected │ 03:01:11  │ 192.168.2.22:5700 │ bond1.2 │ 192.168.2.22 │ true   │ default │ local │ bond1.2@msr_2 │ registered │      72 │
│ core1@ecss2 │ msr_1 │ 3.14.0.235 │       1.0 │    0 │ 22abcd │ connected │ 03:24:08  │ 192.168.2.21:5700 │ bond1.2 │ 192.168.2.21 │ true   │ default │ local │ bond1.2@msr_1 │ registered │      73 │
│             │ msr_2 │ 3.14.0.235 │       1.0 │    0 │ c5b9d8 │ connected │ 03:01:11  │ 192.168.2.22:5700 │ bond1.2 │ 192.168.2.22 │ true   │ default │ local │ bond1.2@msr_2 │ registered │      72 │
└─────────────┴───────┴────────────┴───────────┴──────┴────────┴───────────┴───────────┴───────────────────┴─────────┴──────────────┴────────┴─────────┴───────┴───────────────┴────────────┴─────────┘

[exec at: 11.09.2019 16:42:50, exec time: 24ms, nodes: core1@ecss1

Механизм перепарковки вызовов при остановке/перезапуске медиасервера

При остановке или перезапуске медиасервера, медиасервер предварительно завершает все активные sip сессии до ядер, отправляя BYE c полем Reason со значением SIP;cause=480;text="System Shutdown".
Каждое ядро, принимая данный BYE, понимает, что медиасервер остановили/перезапустили и инициирует процедуру перепарковки данного вызова на другой медиасервер.

Пример сообщения BYE:

BYE sip:core@192.168.23.3:5000 SIP/2.0
Via: SIP/2.0/UDP 127.0.0.1:5040;rport;branch=z9hG4bKPjtPrQHcWDEo-bflsWmwrMTCj.3PnfioVH
Max-Forwards: 70
From: <sip:enp3s0@127.0.0.1>;tag=xxUS3tNZtP3VUn4z1Eld9Y.tVh-vg57B
To: <sip:core@ecss10>;tag=asRx2P
Call-ID: g2gEZAALdGVzdC5kb21haW5tAAAAEGYwNzkxM2I4NmMyNzZmMjFtAAAAEGYwNzkxM2JhMmM5ODhjMjhhAQ==
CSeq: 23023 BYE
User-Agent: Eltex media-server 3.10.0.5
Reason: SIP;cause=480;text="System Shutdown" 
Content-Length:  0

Система с несколькими интерфейсами

Условия

Система настроена для работы по примеру Системы с одним сервером.

Необходимо добавить интерфейс bond1.3 для обслуживания медиасервером.

Настройки

Декларируем медиаресурсы для нового интерфейса:

system/media/resource/declare core1@ecss1 by_iface msr_1 bond1.3 default local true

Система с отдельным медиасервером для селекторной связи на одном хосте

Преимущества

Все вызовы на селектор/с селектора будут парковаться на отдельный медиасервер (медиасервер селекторных совещаний). Если вызов нельзя запарковать на медиасервер, то он будет отклонен.

Условия

Система настроена для работы по примеру Системы с одним сервером.

Настройки

Потребуется сайты для абонентов и для медиа-серверов.

Для абонентов требуются сайты:

  1. local для абонентов. По умолчанию, все абонентов имеют site равный local;
  2. tc для селекторной связи.

Для медиа-серверов требуются site:

  1. video - для медиа-сервера с поддержкой видео;
  2. without-video - для медиа-сервера без поддержки видео.

Декларируем перечисленные выше сайты через расширенный WEB или Cocon:

system/media/site/declare <site>

, в итоге имеет матрицу сайтов:

admin@[md1@IBM]:/$ system/media/site/matrix       
┌───────────────┬───┬───┬────┬────┬───┐
│   Site-name   │ # │ 1 │ 2  │ 3  │ 4 │
├───────────────┼───┼───┼────┼────┼───┤
│ local         │ 1 │ 0 │    │    │   │
│ tc            │ 2 │   │  0 │    │   │
│ video         │ 3 │   │    │  0 │   │
│ without-video │ 4 │   │    │    │ 0 │
└───────────────┴───┴───┴────┴────┴───┘

Legend:
 empty distance - infinity distance between sites.

[exec at: 06.03.2019 13:10:34, exec time: 13ms, nodes: core1@IBM]

После этого настраиваем расстояния между сайтами расширенный WEB или Cocon:

system/media/site/distance <from site> <to site> <distance>

, чтобы матрица расстояний выглядела следующим образом:

admin@[md1@IBM]:/$ system/media/site/matrix 
┌───────────────┬───┬───┬────┬────┬───┐
│   Site-name   │ # │ 1 │ 2  │ 3  │ 4 │
├───────────────┼───┼───┼────┼────┼───┤
│ local         │ 1 │ 0 │    │  5 │ 6 │
│ tc            │ 2 │   │  0 │ 10 │ 3 │
│ video         │ 3 │ 5 │ 10 │  0 │   │
│ without-video │ 4 │ 6 │  3 │    │ 0 │
└───────────────┴───┴───┴────┴────┴───┘

Legend:
 empty distance - infinity distance between sites.

[exec at: 06.03.2019 13:12:16, exec time: 25ms, nodes: core1@IBM]

Выставляем site в tc для системного интерфейса system:teleconference:

admin@[md1@IBM]:/$ domain/test.domain/iface/user-set * * system:teleconference site tc
Property 'site' successfully changed to 'tc' for interfaces:
system:teleconference

[exec at: 06.03.2019 13:18:17, exec time: 25ms, nodes: ds1@IBM]

Настраиваем конфигурационный файл для медиасервера селекторной связи:

/etc/ecss/ecss-media-server/config-without-video.xml

Выставляем параметры port-startport-range и port в секции mcc, таким образом, чтобы они не пересекались с параметрами уже запущенных медиасерверов.

Включаем медиасервер селекторных совещаний:

sudo systemctl enable ecss-media-server@without-video

Запускаем медиасервер селекторных совещаний:

sudo systemctl start ecss-media-server@without-video

Декларируем контакты медиа-сервера с видео с site равным video, пример:

admin@[md1@IBM]:/$ system/media/resource/declare * iface paul enp0s8 default video true          
  Declared media resources
┌─────────────┬─────────────┬────────┬─────────┬───────┐
│    Node     │   Contact   │ Active │   Zone  │  Site │
├─────────────┼─────────────┼────────┼─────────┼───────┤
│ core1@IBM   │ enp0s8@paul │ true   │ default │ video │
│ core2@IBM   │ enp0s8@paul │ true   │ default │ video │
│ core1@ecss1 │ enp0s8@paul │ true   │ default │ video │
│ core1@ecss2 │ enp0s8@paul │ true   │ default │ video │
│ core1@PAUL  │ enp0s8@paul │ true   │ default │ video │
│ core2@PAUL  │ enp0s8@paul │ true   │ default │ video │
└─────────────┴─────────────┴────────┴─────────┴───────┘

[exec at: 06.03.2019 13:22:08, exec time: 150ms, nodes: core1@IBM]

Декларируем контакты медиа-сервера без видео с site равным without-video, пример:

admin@[md1@IBM]:/$ system/media/resource/declare * iface paul.without-video enp0s8 default without-video true  
  Declared media resources
┌─────────────┬───────────────────────────┬────────┬─────────┬───────────────┐
│    Node     │          Contact          │ Active │   Zone  │      Site     │
├─────────────┼───────────────────────────┼────────┼─────────┼───────────────┤
│ core1@IBM   │ enp0s8@paul.without-video │ true   │ default │ without-video │
│ core2@IBM   │ enp0s8@paul.without-video │ true   │ default │ without-video │
│ core1@ecss1 │ enp0s8@paul.without-video │ true   │ default │ without-video │
│ core1@ecss2 │ enp0s8@paul.without-video │ true   │ default │ without-video │
│ core1@PAUL  │ enp0s8@paul.without-video │ true   │ default │ without-video │
│ core2@PAUL  │ enp0s8@paul.without-video │ true   │ default │ without-video │
└─────────────┴───────────────────────────┴────────┴─────────┴───────────────┘

[exec at: 06.03.2019 13:22:35, exec time: 119ms, nodes: core1@IBM]

Если контакты уже были задекларированы, для контактов медиа-сервера с видео выставляем site в video, пример:

admin@[md1@IBM]:/$ system/media/resource/set * enp0s8@paul site video          
  Media resource:
┌─────────────┬─────────────┬──────────┬───────┐
│    Node     │   Contact   │ Property │ Value │
├─────────────┼─────────────┼──────────┼───────┤
│ core2@PAUL  │ enp0s8@paul │ site     │ video │
│ core1@PAUL  │ enp0s8@paul │ site     │ video │
│ core1@ecss2 │ enp0s8@paul │ site     │ video │
│ core1@ecss1 │ enp0s8@paul │ site     │ video │
│ core2@IBM   │ enp0s8@paul │ site     │ video │
│ core1@IBM   │ enp0s8@paul │ site     │ video │
└─────────────┴─────────────┴──────────┴───────┘

[exec at: 06.03.2019 13:28:05, exec time: 35ms, nodes: core1@IBM]

а для контактов медиа-сервера без видео выставляем  site  в without-video, пример:

admin@[md1@IBM]:/$ system/media/resource/set * enp0s8@paul.without-video site without-video  
  Media resource:
┌─────────────┬───────────────────────────┬──────────┬───────────────┐
│    Node     │          Contact          │ Property │     Value     │
├─────────────┼───────────────────────────┼──────────┼───────────────┤
│ core2@PAUL  │ enp0s8@paul.without-video │ site     │ without-video │
│ core1@PAUL  │ enp0s8@paul.without-video │ site     │ without-video │
│ core1@ecss2 │ enp0s8@paul.without-video │ site     │ without-video │
│ core1@ecss1 │ enp0s8@paul.without-video │ site     │ without-video │
│ core2@IBM   │ enp0s8@paul.without-video │ site     │ without-video │
│ core1@IBM   │ enp0s8@paul.without-video │ site     │ without-video │
└─────────────┴───────────────────────────┴──────────┴───────────────┘

[exec at: 06.03.2019 13:28:24, exec time: 34ms, nodes: core1@IBM]

Система с использовани ем site (территориального тяготение)

Существует возможность перепарковывать селекторную связь на конкретный медиа-сервер использую только примитив site.
При парковке вызова, выбирается медиа-сервер до которого существует наименьшее расстояние от паркуемых абонентов(расстояние между от site-ов абонентов до site-ов медиа-серверов). Если находятся 2 и более одинаковых минимальных расстояний до медиа-сервером, то медиа-сервер выбирается равновероятно (на основании его загруженности и коэффициента производительности).

Преимущества

  • не нужно поднимать интерфейс медиа-сервера для zone without-video;
  • если упадет медиа-сервер с site without-video, то вызовы перепаркуются на доступный медиа-сервер (до которого есть расстояние в матрице расстояний между site). В случае zone, вызовы не будут перепаркованы, а будут зарелижены, т.к. больше не будет медиа-сервера, который бы одновременно находился в zone default и zone without-video.

Настройка

В примере рассматривается система с использованием 3-x MSR. Количество MSR можно увеличить в зависимости от требований к системе.

Для абонентов требуются site:

  • local для абонентов. По умолчанию, все абонентов имеют site равный local;
  • tc для селекторной связи.
  • Для медиа-серверов требуются site:
  • video - для медиа-сервера с поддержкой видео;
  • without-video - для медиа-сервера без поддержки видео.

Декларируем перечисленные выше site командой:

system/media/site/declare <site>

Ожидаемая матрица после декларации сайтов:

admin@[md1@IBM]:/$ system/media/site/matrix       
┌───────────────┬───┬───┬────┬────┬───┐
│   Site-name   │ # │ 1 │ 2  │ 3  │ 4 │
├───────────────┼───┼───┼────┼────┼───┤
│ local         │ 1 │ 0 │    │    │   │
│ tc            │ 2 │   │  0 │    │   │
│ video         │ 3 │   │    │  0 │   │
│ without-video │ 4 │   │    │    │ 0 │
└───────────────┴───┴───┴────┴────┴───┘

Legend:
 empty distance - infinity distance between sites.

[exec at: 06.03.2019 13:10:34, exec time: 13ms, nodes: core1@IBM]

После этого настраиваем расстояния между сайтами командой:

system/media/site/distance <from site> <to site> <distance>

Ожидаемый результат настройки сайтов для данного примера:

admin@[md1@IBM]:/$ system/media/site/matrix 
┌───────────────┬───┬───┬────┬────┬───┐
│   Site-name   │ # │ 1 │ 2  │ 3  │ 4 │
├───────────────┼───┼───┼────┼────┼───┤
│ local         │ 1 │ 0 │    │  5 │ 6 │
│ tc            │ 2 │   │  0 │ 10 │ 3 │
│ video         │ 3 │ 5 │ 10 │  0 │   │
│ without-video │ 4 │ 6 │  3 │    │ 0 │
└───────────────┴───┴───┴────┴────┴───┘

Legend:
 empty distance - infinity distance between sites.

[exec at: 06.03.2019 13:12:16, exec time: 25ms, nodes: core1@IBM]

Задание таких расстояний преследовало следующие поведения:

  1. Вызовы с абонента на абонента должны парковаться на медиа-серсер поддерживающий видео: задаем расстояние между абонентом с site равным local(default значение для абонента) и медиа-сервером с поддержкой видео с site равным video в 5;
  2. В случае, если медиа-сервер с поддержкой видео стал недоступен, вызов с абонент на абонента должен парковаться/перепарковываться на любой другой доступный медиа-сервер. В данном случае, это медиа-сервис без поддержки видео => задаем расстояние между абонентом с site равным local и медиа-сервером без поддержкой видео с site равным without-video в 6. Данное значение должно быть больше расстояния между site локального абонента и site медиа-сервера с поддержкой видео. Если его выставить в 5, то между этими двумя медиа-серверами, медиа-сервер будет выбран равновероятно(в зависимости от его загруженности и коэффициента производительности);
  3. Вызов с абонента на конференцию должен парковаться на медиа-сервер без поддержки видео: задаем расстояние между телеконференцией с site равным tc и медиа-сервером без поддержки видео с site равным without-video в 3. Данное значение должно быть наименьшим среди всех остальных расстояний до других медиа-серверов, т.к. выбирается медиа-сервер до которого расстояние наименьшее.
  4. В случае, если медиа-сервер без поддержки видео стал недоступен, вызов с абонента на конференцию должен парковаться/перепарковываться на любой другой доступный медиа-сервер. В данном случае, это медиа-сервис с поддержкой видео. Выставляем расстояние между site конференцию и site медиа-сервера в 10.

Выставляем site в tc для системного интерфейса system:teleconference:

admin@[md1@IBM]:/$ domain/test.domain/iface/user-set * * system:teleconference site tc
Property 'site' successfully changed to 'tc' for interfaces:
system:teleconference

[exec at: 06.03.2019 13:18:17, exec time: 25ms, nodes: ds1@IBM]

Декларируем контакты медиа-сервера с видео с site равным video:

admin@[md1@IBM]:/$ system/media/resource/declare * iface paul enp0s8 default video true          
  Declared media resources
┌─────────────┬─────────────┬────────┬─────────┬───────┐
│    Node     │   Contact   │ Active │   Zone  │  Site │
├─────────────┼─────────────┼────────┼─────────┼───────┤
│ core1@IBM   │ enp0s8@paul │ true   │ default │ video │
│ core2@IBM   │ enp0s8@paul │ true   │ default │ video │
│ core1@ecss1 │ enp0s8@paul │ true   │ default │ video │
│ core1@ecss2 │ enp0s8@paul │ true   │ default │ video │
│ core1@PAUL  │ enp0s8@paul │ true   │ default │ video │
│ core2@PAUL  │ enp0s8@paul │ true   │ default │ video │
└─────────────┴─────────────┴────────┴─────────┴───────┘

[exec at: 06.03.2019 13:22:08, exec time: 150ms, nodes: core1@IBM]

Декларируем контакты медиа-сервера без видео с site равным without-video:

admin@[md1@IBM]:/$ system/media/resource/declare * iface paul.without-video enp0s8 default without-video true  
  Declared media resources
┌─────────────┬───────────────────────────┬────────┬─────────┬───────────────┐
│    Node     │          Contact          │ Active │   Zone  │      Site     │
├─────────────┼───────────────────────────┼────────┼─────────┼───────────────┤
│ core1@IBM   │ enp0s8@paul.without-video │ true   │ default │ without-video │
│ core2@IBM   │ enp0s8@paul.without-video │ true   │ default │ without-video │
│ core1@ecss1 │ enp0s8@paul.without-video │ true   │ default │ without-video │
│ core1@ecss2 │ enp0s8@paul.without-video │ true   │ default │ without-video │
│ core1@PAUL  │ enp0s8@paul.without-video │ true   │ default │ without-video │
│ core2@PAUL  │ enp0s8@paul.without-video │ true   │ default │ without-video │
└─────────────┴───────────────────────────┴────────┴─────────┴───────────────┘

[exec at: 06.03.2019 13:22:35, exec time: 119ms, nodes: core1@IBM]

Если контакты уже были задекларированы, для контактов медиа-сервера с видео выставляем site в video:

admin@[md1@IBM]:/$ system/media/resource/set * enp0s8@paul site video          
  Media resource:
┌─────────────┬─────────────┬──────────┬───────┐
│    Node     │   Contact   │ Property │ Value │
├─────────────┼─────────────┼──────────┼───────┤
│ core2@PAUL  │ enp0s8@paul │ site     │ video │
│ core1@PAUL  │ enp0s8@paul │ site     │ video │
│ core1@ecss2 │ enp0s8@paul │ site     │ video │
│ core1@ecss1 │ enp0s8@paul │ site     │ video │
│ core2@IBM   │ enp0s8@paul │ site     │ video │
│ core1@IBM   │ enp0s8@paul │ site     │ video │
└─────────────┴─────────────┴──────────┴───────┘

[exec at: 06.03.2019 13:28:05, exec time: 35ms, nodes: core1@IBM]

Для контактов медиа-сервера без видео выставляем site в without-video:

admin@[md1@IBM]:/$ system/media/resource/set * enp0s8@paul.without-video site without-video  
  Media resource:
┌─────────────┬───────────────────────────┬──────────┬───────────────┐
│    Node     │          Contact          │ Property │     Value     │
├─────────────┼───────────────────────────┼──────────┼───────────────┤
│ core2@PAUL  │ enp0s8@paul.without-video │ site     │ without-video │
│ core1@PAUL  │ enp0s8@paul.without-video │ site     │ without-video │
│ core1@ecss2 │ enp0s8@paul.without-video │ site     │ without-video │
│ core1@ecss1 │ enp0s8@paul.without-video │ site     │ without-video │
│ core2@IBM   │ enp0s8@paul.without-video │ site     │ without-video │
│ core1@IBM   │ enp0s8@paul.without-video │ site     │ without-video │
└─────────────┴───────────────────────────┴──────────┴───────────────┘

[exec at: 06.03.2019 13:28:24, exec time: 34ms, nodes: core1@IBM]

Настройка выделенного MSR для группы абонентов

Периодически на системе бывает так, что определенная группа абонентов софтсвича территориально удалена от сервером ECSS-10, и/или ограничена по ширине канала связи (выделенная локация). В этом случае, с целью оптимизации трафика, для разговора абонентов такой группы между собой есть смысл парковать их медию на отдельно стоящий MSR, который будет расположен на той же локации что и абоненты. При этом, если абонент данной локации разговаривает с абонентом "центра", то использоваться должен основной MSR. В данном разделе мы опишем пошаговую инструкцию по настройки данной схемы.

Рассмотрим пример. Есть софтсвич, стоящий в Москве, им пользуются vip-клиенты, локальные пользователи, а также существует возможность собирать телеконференции. Для каждого из этих типов пользователей имеется отдельный MSR. По умолчанию в системе создан site local, в котором по умолчанию создаются все абоненты ECSS-10.

ПользователиMSR
VIPMSR.1
LOCALMSR.2
TCMSR.3

Создание site-ов

Нужно создать site для абонента VIP и TC.

По умолчанию список site следующий:

admin@[mycelium1@PAUL#ECSS-D-MECHANIC]:/$ system/media/site/list         
List of all sites:
 local

Создаем site для  абонента VIP :

admin@[mycelium1@PAUL#ECSS-D-MECHANIC]:/$ system/media/site/declare vip     
Site: vip
 Created successfully.

Создаем site для абонентов TC:

admin@[mycelium1@PAUL#ECSS-D-MECHANIC]:/$ system/media/site/declare tc    
Site: tc
 Created successfully.

После изменений  список site  следующий:

admin@[mycelium1@PAUL#ECSS-D-MECHANIC]:/$ system/media/site/list          
List of all sites:
 local
 vip
 tc

Настройка матрицы связности между site-ами

После создания site-ов,  матрица связности  между site-ами будет следующей:

admin@[mycelium1@PAUL#ECSS-D-MECHANIC]:/$ system/media/site/matrix       
┌───────────┬───┬───┬───┬───┐
│ Site-name │ # │ 1 │ 2 │ 3 │ 
├───────────┼───┼───┼───┼───┤
│ vip       │ 1 │ 0 │   │   │
│ local     │ 2 │   │ 0 │   │
│ tc        │ 3 │   │   │ 0 │
└───────────┴───┴───┴───┴───┘

Legend:
 empty distance - infinity distance between sites.

К MSR1 должен быть привязан site vip, к MSR2 local, к MSR3 tc.

Выставляем расстояние между  абонентами VIP и медиа-сервером MSR.1, который также использует сайт VIP :

admin@[mycelium1@PAUL#ECSS-D-MECHANIC]:/$ system/media/site/distance vip vip 10
Distance between vip and vip changed to: 10.

Выставляем расстояние между  абонентами VIP и медиа-сервером MSR.2, который использует сайт LOCAL :

admin@[mycelium1@PAUL#ECSS-D-MECHANIC]:/$ system/media/site/distance vip local 20
Distance between vip and local changed to: 20.

Выставляем расстояние между  абонентами VIP и медиа-сервером MSR.3, который использует сайт TC :

admin@[mycelium1@PAUL#ECSS-D-MECHANIC]:/$ system/media/site/distance vip tc 50
Distance between vip and tc changed to: 50.

Выставляем расстояние между  абонентами LOCAL и медиа-сервером MSR.1, который использует сайт VIP :

admin@[mycelium1@PAUL#ECSS-D-MECHANIC]:/$ system/media/site/distance local vip r
Distance between local and vip changed to: r.

Выставляем расстояние между  абонентами LOCAL и медиа-сервером MSR.2, который использует сайт LOCAL :

admin@[mycelium1@PAUL#ECSS-D-MECHANIC]:/$ system/media/site/distance local local 10
Distance between local and local changed to: 10.

Выставляем расстояние между  абонентами LOCAL и медиа-сервером MSR.3, который использует сайт ТС :

admin@[mycelium1@PAUL#ECSS-D-MECHANIC]:/$ system/media/site/distance local tc 50
Distance between local and tc changed to: 50.

Выставляем расстояние между  TC и медиа-сервером MSR.3, который использует сайт ТС :

admin@[mycelium1@PAUL#ECSS-D-MECHANIC]:/$ system/media/site/distance tc tc 0
Distance between local and tc changed to: 0.

После изменений,  матрица связности  следующая:

admin@[mycelium1@PAUL#ECSS-D 000001]:/$ system/media/site/matrix                                 
┌───────┬───┬───┬────┬────┐
│ site  │ # │ 1 │ 2  │ 3  │
├───────┼───┼───┼────┼────┤
│ vip   │ 1 │ 0 │ 20 │ 50 │
│ local │ 2 │ r │ 10 │ 50 │
│ tc    │ 3 │   │    │  0 │
└───────┴───┴───┴────┴────┘

Декларация ресурсом медиа-серверов

Пусть на ядре зарегистрированы 3 меда-сервера, MSR.1, MSR.2, MSR.3.

admin@[mycelium1@PAUL#ECSS-D-MECHANIC]:/$ 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.14.5.5 │       1.0 │    0 │ 0b131b │ connected │ 01:28:59  │ 127.0.0.1:5700       │ lo          │ 127.0.0.1       │ false  │         │       │ lo@MSR.1          │ registered   │     119 │
│             │       │          │           │      │        │           │           │                      │ eno4        │ 192.168.116.179 │ false  │         │       │ eno4@MSR.1        │ registered   │     119 │
│             │ MSR.2 │ 3.14.5.5 │       1.0 │    0 │ 7a7740 │ connected │ 01:26:08  │ 10.24.40.53:5700     │ enp2s0      │ 192.168.116.181 │ false  │         │       │ enp2s0@MSR.2      │ registered   │     170 │
│             │       │          │           │      │        │           │           │                      │ lo          │ 127.0.0.1       │ false  │         │       │ lo@MSR.2          │ registered   │     170 │
│             │ MSR.3 │ 3.14.5.5 │       1.0 │    0 │ f01fb6 │ connected │ 00:20:06  │ 192.168.116.131:5700 │ bond1       │ 192.168.116.131 │ false  │         │       │ bond1@MSR.3       │ registered   │     173 │ 
│             │       │          │           │      │        │           │           │                      │ lo          │ 127.0.0.1       │ false  │         │       │ lo@MSR.3          │ registered   │     174 │
└─────────────┴───────┴──────────┴───────────┴──────┴────────┴───────────┴───────────┴──────────────────────┴─────────────┴─────────────────┴────────┴─────────┴───────┴───────────────────┴──────────────┴─────────┘

Декларируем ресурс медиа-сервера MSR.1 c site vip :

admin@[mycelium1@PAUL#ECSS-D-MECHANIC]:/$ system/media/resource/declare * iface MSR.1 eno4 default vip true       
  Declared media resources
┌─────────────┬────────────┬────────┬─────────┬─────────┐
│    Node     │  Contact   │ Active │   Zone  │   Site  │
├─────────────┼────────────┼────────┼─────────┼─────────┤
│ core1@IBM   │ eno4@MSR.1 │ true   │ default │ vip     │
│ core2@IBM   │ eno4@MSR.1 │ true   │ default │ vip     │
└─────────────┴────────────┴────────┴─────────┴─────────┘

Декларируем ресурс медиа-сервера MSR.2 c site local :

admin@[mycelium1@PAUL#ECSS-D-MECHANIC]:/$ system/media/resource/declare * iface MSR.2 enp2s0 default local true       
  Declared media resources
┌─────────────┬──────────────┬────────┬─────────┬─────────┐
│    Node     │    Contact   │ Active │   Zone  │   Site  │
├─────────────┼──────────────┼────────┼─────────┼─────────┤
│ core1@IBM   │ enp2s0@MSR.2 │ true   │ default │ local   │
│ core2@IBM   │ enp2s0@MSR.2 │ true   │ default │ local   │
└─────────────┴──────────────┴────────┴─────────┴─────────┘

Декларируем ресурс медиа-сервера MSR.3 c site tc :

admin@[mycelium1@PAUL#ECSS-D-MECHANIC]:/$ system/media/resource/declare * iface MSR.3 bond1 default tc true       
  Declared media resources
┌─────────────┬──────────────┬────────┬─────────┬─────────┐
│    Node     │    Contact   │ Active │   Zone  │   Site  │
├─────────────┼──────────────┼────────┼─────────┼─────────┤
│ core1@IBM   │ bond1@MSR.3  │ true   │ default │ tc      │
│ core2@IBM   │ bond1@MSR.3  │ true   │ default │ tc      │
└─────────────┴──────────────┴────────┴─────────┴─────────┘

После изменений  список ресурсов  следующий:

admin@[mycelium1@PAUL#ECSS-D-MECHANIC]:/$ 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.14.5.5 │       1.0 │    0 │ 0b131b │ connected │ 01:28:59  │ 127.0.0.1:5700       │ lo          │ 127.0.0.1       │ false  │         │       │ lo@MSR.1          │ registered   │     119 │
│             │       │          │           │      │        │           │           │                      │ eno4        │ 192.168.116.179 │ true   │default  │vip    │ eno4@MSR.1        │ registered   │     119 │
│             │ MSR.2 │ 3.14.5.5 │       1.0 │    0 │ 7a7740 │ connected │ 01:26:08  │ 10.24.40.53:5700     │ enp2s0      │ 192.168.116.181 │ true   │default  │local  │ enp2s0@MSR.2      │ registered   │     170 │
│             │       │          │           │      │        │           │           │                      │ lo          │ 127.0.0.1       │ false  │         │       │ lo@MSR.2          │ registered   │     170 │
│             │ MSR.3 │ 3.14.5.5 │       1.0 │    0 │ f01fb6 │ connected │ 00:20:06  │ 192.168.116.131:5700 │ bond1       │ 192.168.116.131 │ true   │default  │tc     │ bond1@MSR.3       │ registered   │     173 │ 
│             │       │          │           │      │        │           │           │                      │ lo          │ 127.0.0.1       │ false  │         │       │ lo@MSR.3          │ registered   │     174 │
└─────────────┴───────┴──────────┴───────────┴──────┴────────┴───────────┴───────────┴──────────────────────┴─────────────┴─────────────────┴────────┴─────────┴───────┴───────────────────┴──────────────┴─────────┘

Выставление site-ов на абонентах

По умолчанию на абоненте site выставлен в local Для того, чтобы абонента сделать абонентом VIP, нужно на абоненте выставить site в vip:

admin@[mycelium1@PAUL#ECSS-D 000001]:/$ domain/test.domain/iface/user-set * * 103@test.domain site vip       
Property 'site' successfully changed to 'vip' for interfaces:
103@test.domain

Принцип распределения вызов

При выставлении на интерфейсе system:teleconference сайта tc, все конференции будут собираться через MSR.3. В случае его падения, конференции собираться не будут.
Звонки между VIP абонентами будут проходить через MSR.1, в случае его падения через MSR.2, если же и MSR.2 будет иметь несиправности, то вызовы пойдут через MSR.3
Локальные абоненты будут задействовать MSR.2, в случае его падения MSR.3.
Звонки между VIP и локальными абонентами будут осуществляться через MSR.1 и MSR.2.