Border Gate’s Media Gate (bgmg)

Описание

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

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

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

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

Код

bgmg

Режим работы

Сервис

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

Active-Active

Типы сайтов

Любые

Слой

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

Размещение

Пограничный

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

Нет

Приложение

era_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

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

ext

json

empty

Дополнительные опции роли. Содержит json объект или список.

enabled

bool

empty

Флаг активности роли. При установке в false роль не участвует в валидации и не запускается.

roleid

int

required

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

separate

bool

required

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

port

int

2944

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

mgcgroup

int

0

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

aliases

array<object>

empty

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

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

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

codecs

array<str>

empty

Список используемых кодеков. Ограничивает использование кодеков, выдаваемых вовне.
Возможные значения: "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/era/era_sip/priv/ssl"

keypass

str

empty

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

domgrecordcalls

bool

true

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

mgrecordcalls

str

/var/lib/era/files/records

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

termportranges

array<object>

empty

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

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

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

logrootpath

str

empty

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

logtrace

array<str>

["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": 11301,
  "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"
  ]
}

См. также