Border Gate’s Media Gate (bgmg)

Описание

Медиа-шлюз, замыкающий медиа потоки на внешних интерфейсах.
Одной стороной всегда выступает порт функциональной роли mg управляемый функциональной ролью b2b, а другой стороной – порт абонентского устройства.
Работает на одном сервере с функциональной ролью sg и/или esg и под их управлением.

Может быть зарезервирована на одном сервере в режиме Active-Active с непересекающимися настройками нескольких экземпляров.

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

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

Код

bgmg

Режим работы

Сервис

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

Active-Active

Типы сайтов

Любые

Слой

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

Размещение

Пограничный

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

Нет

Приложение

rostell_mg

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

rtx_mg3

Ограничения

  • Должна существовать на всех серверах с несколькими интерфейсами с доступом к разным подсетям, где присутствуют функциональные роли sg и esg.

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

  • Активное использование функциональной роли понижает потенциальную пропускную способность трафика сигнализации SIP через сервер.

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

Параметры

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

name

str

required

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

roletype

str

required

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

iface

str

required

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

roleid

int

required

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

separate

bool

required

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

port

int

2944

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

mgcgroup

int

0

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

aliases

array<object>

required

Aлиасы интерфейсов.

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

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

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

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

termportranges

array<object>

required

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

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

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

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": "bgmg1",
  "roletype": "bgmg",
  "iface": "eth0",

  "roleid": 11111,
  "separate": true,
  "port": 2984,
  "mgcgroup": 3,
  "aliases": [
    {
      "key": "tgw1",
      "value": "eth0"
    }
  ],
  "termportranges": [
    {
      "key": "tgw1",
      "value": "30000:1000"
    }
  ],

  "codecs": ["PCMA", "PCMU"],
  "logtrace": [
    "error",
    "warning",
    "call",
    "flag3",
    "proto",
    "media-flow",
    "rtp-flow",
    "rtp"
  ]
}

См. также