SIP
Раздел Сервисы описывает объекты. Здесь собраны типовые задачи целиком: что настроить, в каком порядке, как убедиться, что регистрация и звонок работают, и что означают ошибки, если не заработало.
- SIP с CommuniGate Pro — сигнализация через балансировщик 5А с бэкендом CommuniGate Pro: SIP-монитор с запросом
OPTIONS, SIP-прокси в софтфоне, разбор звонка по логу CGP. - SIP с Asterisk — то же с Asterisk: допустимые коды ответа для монитора, контрольное отключение сервиса и расшифровка записей stream-лога.
Оба сценария рассчитаны на SIP-сигнализацию по UDP через L4 UDP-конфигурацию балансировки. Бэкенд — сервер телефонной платформы, клиент — софтфон.
Как идёт трафик
Балансировщик работает с SIP на транспортном уровне (L4) и не разбирает содержимое SIP-сообщений.
Через балансировщик проходят:
REGISTER— регистрация софтфона, и ответы на него;- исходящий
INVITE— вызов, который софтфон отправляет на сервер, и ответы на него.
Напрямую между сервером и софтфоном идут:
- входящий
INVITEвызываемому абоненту; - запросы внутри уже установленного разговора (
BYEи подобные); - голос (RTP).
Причина в том, что телефонная платформа адресует эти запросы по адресу Contact, который софтфон указал при регистрации, а балансировщик этот заголовок не переписывает. Поэтому серверу нужен доступ до софтфонов по адресам из их Contact, а софтфонам — до медиапортов сервера.
Ограничения
- Балансировка L4 не анализирует и не переписывает поля SIP
Via,Contact,Record-RouteиSDP: сообщения передаются как есть. - Голос (RTP) идёт напрямую и через балансировщик не проходит.
- Статус «На линии» в софтфоне означает успешную регистрацию, а не рабочий звонок. Работоспособность вызова проверяется отдельным звонком, причём в обе стороны.
- Для нескольких SIP-серверов в одной группе нужна общая база регистраций (кластер платформы) либо persistence по IP клиента: иначе регистрация абонента и вызов к нему могут попасть на разные серверы.
Для проверки доступности SIP-сервера в системе есть монитор с протоколом SIP: он отправляет OPTIONS или REGISTER по UDP или TCP (при необходимости — поверх TLS) и сверяет код ответа. Поля монитора описаны в разделе о мониторах.