Работа с API телефонии

Односторонняя слышимость в SIP: где ломается RTP и как это чинят NAT, STUN и TURN

Односторонняя слышимость в SIP: где ломается RTP и как это чинят NAT, STUN и TURN

Односторонний звук почти всегда связан не с SIP-сигнализацией, а с тем, куда именно уходит RTP. Типовой сценарий: INVITE/200 OK проходят, вызов устанавливается, а аудио идет только в одну сторону. Разбираем дамп трафика в Wireshark, и вот что мы там видим: в SDP указан приватный адрес 192.168.x.x или 10.x.x.x, а удаленная сторона пытается слать RTP именно туда.

Основные причины:
• NAT переписывает только SIP-порт, но не RTCP/RTP-диапазон
• телефон за symmetric NAT не принимает входящий RTP без предварительного исходящего пакета
• в SDP объявлен неверный c= и m= адрес, а SBC/шлюз не подменяет его
• firewall пропускает SIP, но режет UDP-порты медиапула

STUN решает только обнаружение внешнего адреса клиента и подходит, если NAT предсказуемый. Он не пробивает связь сам по себе: клиент все равно должен корректно объявить внешний IP и открыть медиасессию исходящим пакетом. TURN нужен, когда прямой P2P-маршрут нестабилен или невозможен: тогда медиа релейится через сервер, и оба конца видят один и тот же публичный anchor. Это дороже по трафику, но резко снижает процент “я слышу, меня нет”.

На практике проверяйте три точки: 1) SDP до и после NAT, 2) совпадение RTP-портов с разрешенным диапазоном на firewall, 3) есть ли симметрия в маршруте медиа. Если у вас Asterisk, FreeSWITCH или Kamailio, смотрите, кто именно переписывает SDP и не отключен ли rport/ symmetric RTP. Отказоустойчивость — это не роскошь, а базовое требование к SIP-платформе.

Если односторонняя слышимость повторяется, лечите не “звонок”, а медиа-путь: сначала SDP, потом NAT, затем relay через TURN или SBC.
Этот пост опубликован в Telegram-канале Работа с API телефонии. Подписаться можно по ссылке: @phone_api_gateway_arb.
tech

Свежие посты в категории «Tech Infrastructure»

Все каналы категории →

start

Готовы запустить рекламу через сеть public.tg?

Новый оффер, продукт, GEO, кейс, событие или партнёрский запуск — соберём маршрут под задачу и отдадим медиаплан.

Telegram для медиаплана: @AFFtop_connect. Быстрый тест: $20 за канал, $1000 за пакет по сети.