Примеры настройки
Система с одним сервером
Условия
Медиасервер установлен на том же сервере, что и 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>
В настройках 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
Настройки
На первом сервере в конфигурационном файле /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
На втором сервере адрес 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
В настройках 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
Система с отдельным медиасервером для селекторной связи на одном хосте
Преимущества
Все вызовы на селектор/с селектора будут парковаться на отдельный медиасервер (медиасервер селекторных совещаний). Если вызов нельзя запарковать на медиасервер, то он будет отклонен.
Условия
Система настроена для работы по примеру Системы с одним сервером.
Настройки
Потребуется сайты для абонентов и для медиа-серверов.
Для абонентов требуются сайты:
- local для абонентов. По умолчанию, все абонентов имеют site равный local;
- tc для селекторной связи.
Для медиа-серверов требуются site:
- video - для медиа-сервера с поддержкой видео;
- 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-start, port-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]
Задание таких расстояний преследовало следующие поведения:
- Вызовы с абонента на абонента должны парковаться на медиа-серсер поддерживающий видео: задаем расстояние между абонентом с site равным local(default значение для абонента) и медиа-сервером с поддержкой видео с site равным video в 5;
- В случае, если медиа-сервер с поддержкой видео стал недоступен, вызов с абонент на абонента должен парковаться/перепарковываться на любой другой доступный медиа-сервер. В данном случае, это медиа-сервис без поддержки видео => задаем расстояние между абонентом с site равным local и медиа-сервером без поддержкой видео с site равным without-video в 6. Данное значение должно быть больше расстояния между site локального абонента и site медиа-сервера с поддержкой видео. Если его выставить в 5, то между этими двумя медиа-серверами, медиа-сервер будет выбран равновероятно(в зависимости от его загруженности и коэффициента производительности);
- Вызов с абонента на конференцию должен парковаться на медиа-сервер без поддержки видео: задаем расстояние между телеконференцией с site равным tc и медиа-сервером без поддержки видео с site равным without-video в 3. Данное значение должно быть наименьшим среди всех остальных расстояний до других медиа-серверов, т.к. выбирается медиа-сервер до которого расстояние наименьшее.
- В случае, если медиа-сервер без поддержки видео стал недоступен, вызов с абонента на конференцию должен парковаться/перепарковываться на любой другой доступный медиа-сервер. В данном случае, это медиа-сервис с поддержкой видео. Выставляем расстояние между 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 |
---|---|
VIP | MSR.1 |
LOCAL | MSR.2 |
TC | MSR.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.