Media Gate (mg)

Описание

Медиа-шлюз, замыкающий медиа-потоки.
Управляется функциональной ролью mgc по протоколу MEGACO. Каждый медиа-контекст управляется одной из функциональных ролей: b2b, conf, ivr, esg.

Резервируется и масштабируется в режиме Active-Active и дополнительно распределением по группам mgc.

Организует запуск и мониторинг процесса приложения rtx_mg3 в операционной системе, фактически осуществляющего обработку медиа-трафика.

Table 1. Системные характеристики

Код

mg

Режим работы

Сервис

Режим резервирования

Active-Active

Типы сайтов

Любые

Слой

Бизнес-логика

Размещение

Внутренний или пограничный

Сохранение и восстановление состояния при перезагрузке

Нет

Приложение

rostell_mg

Управляемое приложение

rtx_mg3

Ограничения

  • Должна присутствовать на всех сайтах с функциональными ролями b2b при использовании в системе медиа-обработки (опция "b2bmedia" в функциональных ролях sg, esg, ivr, conf).

  • Настройки портов не должны пересекаться с другими функциональными ролями на сервере.

  • Для полноценной кросс-сайтовой работы системы необходимо, чтобы все экземпляры функциональных ролей mg обслуживали трафик на тех сетевых интерфейсах, с которых достижимы аналогичные адреса всех остальных функциональных ролей mg и bgmg. В противном случае кросс-сайтовые звонки могут быть невозможны.

  • Пропускная способность сетевых интерфейсов, обслуживающих медиа-трафик, и подключений к сетям должна сочетаться с возможной пиковой нагрузкой и используемыми кодеками. Так, 200 телефонных разговоров в кодеке PCMA (G.711 a-law) требуют пропускной способности не менее 20 Mbit/s в каждую сторону в самой узкой точке. При обслуживании большего количества разговоров и распределении их по разным серверам с медиа-шлюзами необходимо обеспечить соответствующую пропускную способность на сетевых устройствах, агрегирующих трафик.

  • Трафик всегда проходит по кратчайшему маршруту: устройство А - медиа-шлюз - устройство Б (на логическом уровне, исключающем все промежуточные сетевые устройства). Но в ряде случаев устройствами А и Б могут выступать другие медиа-шлюзы, обслуживающие медиа-контексты конференций и IVR. В отдельном случае при стыковке разных подсетей на пограничных функциональных ролях sg и esg в качестве устройств А и Б могут выступать медиа-шлюзы функциональной роли bgmg.

  • Возможна работа на нескольких интерфейсах, при этом указываются параметры `aliases` и `termportranges`. Указание одновременно пары параметров (`aliases`, `termportranges`) и пары (`rtpiface`,`termportrange`) запрещено.

Параметры

Table 2. Параметры
Имя Тип Умолчание Описание

name

str

required

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

roletype

str

required

Тип функциональной роли. Возможные значения: "mg".

iface

str

required

Алиас сетевого интерфейса сервера, на котором будет происходить внутреннее взаимодействие функциональных ролей между собой.

roleid

int

required

Идентификатор функциональной роли.
Уникален для всей системы, независимо от сайта или сервера. Не подлежит изменению.
Целое число от 1 до 9999.

separate

bool

required

Признак выделения функциональной роли в отдельную ноду.

mgcgroup

int

0

Группа mgc, к которой принадлежит текущий mg.
Совпадает с параметром group в функциональных ролях с типом mgc.

port

int

required

Локальный порт TCP MEGACO.
Стандартный порт: 2944.

codecs

array<str>

Список используемых кодеков. Ограничивает использование кодеков, выдаваемых вовне.
Возможные значения: "GSM", "PCMA", "PCMU", "G722", "G729", "G726-16", "G726-24", "G726-32", "G726-40", "opus", "speex", "G729a", "VP8", "VP9", "H264", "H263", "H263-1998", "H263-2000". По умолчанию: не задано, используются все поддерживаемые кодеки.

certdir

str

empty

Алиас каталога на сервере для хранения сертификатов (файлы server.crt и server.key).
Если путь не указан, то поиск сертификатов осуществляется в каталоге "/usr/lib/rostell/rostell_sip/priv/ssl"

keypass

str

empty

Пароль для расшифровки файла секретного ключа сертификата.

domgrecordcalls

bool

true

Признак сохранения записей разговоров.

mgrecordcalls

str

/var/lib/rostell/files/records

Алиас каталога на сервере для размещения записей разговоров.

rtpiface

str

empty

Алиас сетевого интерфейса сервера, который будет использоваться для обслуживания RTP-трафика.
По умолчанию используется интерфейс из поля iface.
Не допустимо указание одновременно с aliases и termportranges.

termportrange

str

empty

Диапазон RTP портов, которые будет использовать данный экземпляр функциональной роли на сетевом интерфейсе.
Формат: "PortFrom:PortCnt", где PortFrom – начальное значение порта, PortCnt – количество портов.
Если не задано используется диапозон "10000:20000".
Не допустимо указание одновременно с aliases и termportranges.

aliases

array<object>

empty

Aлиасы интерфейсов, для работы функциональной роли на нескольких интерфейсах.

Формат записи алиаса для интерфейса:
{"key":"AliasName", "value":"IpAddr"}

В приложении редактора конфигураций задаются путем выбора интерфейсов, алиасы подставляются автоматически.
Не допустимо указание одновременно с rtpiface и termportrange.

termportranges

array<object>

empty

Диапазон RTP портов, которые будет использовать функциональная роль, для работы на нескольких интерфейсах.
Задается для каждого алиаса отдельно.

Формат записи диапозона портов:
{"key":"AliasName","value":"PortFrom:PortCnt"}

где AliasName – имя интерфейса, PortFrom – начальное значение порта, PortCnt – количество портов.
По умолчанию для каждого алиаса будет установлено: "10000:20000"
Не допустимо указание одновременно с rtpiface и termportrange.

logrootpath

str

empty

Алиас каталога на сервере для размещения лог-файлов.
По умолчанию: "/var/lib/rostell/_workdir/<NODE_NAME>/log/mg".

logtrace

array<str>

["error", "warning"]

Уровень логирования.

Возможные значения:
timer, call, events, proto, error, warning, trans, async, stream, fax, net, media-flow, rtp-flow, rtp, session, stat, flag1, flag2, flag3, flag4, flag5, flag6, flag7, flag8.

logmaxsize, int, 2000, "Максимальный суммарный размер лог-файлов за один день, в МБ. При достижении лимита запись логов останавливается в ожидании удаления, в том числе автоматического по времени.

logpartsize

int

200

Максимальный размер одного лог-файла, в МБ.

rtcpmonitor

bool

false

Выключатель логирования статистики на основе пакетов RTCP.

recdumpinterval

int

5000

Интервал сброса данных из кэша в исходный файл записи разговора, в миллисекундах.
Минимальное значение: 500.

Пример конфигурации

Управление конфигурацией производится в приложении, доступном для администраторов мастер-домена. Приложение скрывает полное содержание конфигурации, однако тем не менее оно доступно через API.

Конфигурация содержит раздел для описания всех экземпляров всех функциональных ролей. Параметры определяются для каждого конкретного экземпляра функциональной роли.

Пример узла
{
  "name": "mg3",
  "roletype": "mg",
  "iface": "eth0",

  "roleid": 804,
  "separate": true,
  "port": 2945,
  "mgcgroup": 3,

  "codecs": ["PCMA", "PCMU"],
  "logpartsize": 10,
  "logtrace": [
    "error",
    "warning",
    "stat",
    "call",
    "flag3",
    "proto",
    "media-flow",
    "rtp-flow",
    "rtp",
    "stream",
    "flag7",
    "flag8",
    "net"
  ],
  "mgrecordcalls": "alias://paths/b",
  "recdumpinterval": 3000,
  "rtcpmonitor": true,
  "termportrange": "10000:2000"
}

См. также