Border Gate’s Media Gate (bgmg)

Описание

Пограничный медиа-шлюз, замыкающий медиа потоки на внешних интерфейсах.
Одной стороной всегда выступает порт роли mg управляемый ролью b2b, а другой стороной – порт абонентского устройства (если плечо внутреннего абонента) или порт провайдера (плечо внешнего абонента).
Может быть зарезервирована на одном сервере в режиме Active-Active с непересекающимися настройками нескольких экземпляров.
Организует запуск и мониторинг процесса приложения rtx_mg3 в операционной системе, фактически осуществляющего обработку медиа-трафика.

Работает на одном сервере с ролью sg и/или esg и под их управлением.
Пограничный медиа-шлюз может понадобиться в нескольких случаях:
- Если пограничный outbound-proxy сервер системы (микросервис sg) размещен в нескольких подсетях, и существует такая подсеть, откуда подключаются абоненты, и доступ к которой отсутствует на других серверах системы, где исполняются микросервисы mg.
- Если сервер, обслуживающий подключения к провайдерам телефонии (микросервис esg), размещен в нескольких подсетях так, что подсеть какого-либо провайдера не распространяется на другие серверы системы.
- Если какой-либо провайдер телефонии требует совпадения абонентских адресов в SIP и SDP, описывающей медиа-сессии.
- Если какой-либо провайдер телефонии не обрабатывает реинвайты (запрещает, либо игнорирует изменения медиа-сессии).

Пограничный медиа-шлюз используется при взаимодействии с провайдером, если:
- Учетная запись провайдера активирует режим media. В противном случае режим не используется даже при соблюдении других условий.
- На сервере, где исполняется микросервис esg, обслуживающий эту учетную запись провайдера, также исполняется хотя бы один микросервис bgmg. В противном случае вызовы от/к провайдеров с включенным media завершаются отказом сервера от обработки вызова. +

Пограничный медиа-шлюз используется при взаимодействии с внутренними абонентами, если:
- Система развернута более чем на 1 сервере. В противном случае режим не используется даже при соблюдении других условий.
- На сервере, где исполняется микросервис sg, обслуживающий абонентские подключения, исполняется хотя бы один микросервис bgmg. В противном случае режим не используется даже при соблюдении других условий.
- В конфигурационных параметрах микросервиса sg, обслуживающего абонентские подключения, включен режим bgmedia. В противном случае режим не используется даже при соблюдении других условий.

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

Код

bgmg

Режим работы

Сервис

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

Active-Active

Типы сайтов

Любые

Слой

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

Размещение

Пограничный

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

Нет

Приложение

era_mg

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

rtx_mg3

Ограничения

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

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

  • Активное использование роли понижает потенциальную пропускную способность трафика сигнализации 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.

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

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

termportrange

str

"10000:20000"

Диапазон RTP портов, которые будет использовать данный экземпляр роли.
Формат: "PortFrom:PortCnt", где 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"
  ]
}

См. также