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

Односторонняя слышимость: где ломается RTP при NAT и почему STUN не всегда спасает

Односторонняя слышимость: где ломается RTP при NAT и почему STUN не всегда спасает

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

Причины обычно три:
— NAT подменяет адрес, но в SDP остаётся внутренний IP
— firewall пропускает SIP, но режет UDP-диапазон RTP
— endpoint шлёт media с одного порта, а получает на другой из-за symmetric NAT

STUN помогает только если клиенту нужно узнать внешний адрес и порт для публикации в SDP. Он бесполезен, когда NAT симметричный, когда между узлами несколько трансляторов или когда трафик идёт через CGNAT. В этих случаях нужен TURN: он не «чинит» NAT, а выносит RTP через relay, делая маршрут предсказуемым. Для WebRTC это часто единственный стабильный вариант.

На стороне SIP-платформы проверьте: rport и symmetric RTP, корректный rewrite SDP, pinhole для UDP, таймауты NAT-таблиц и совпадение RTP-порта с разрешённым диапазоном. Если Asterisk/FreeSWITCH видит пакет только в одну сторону, ищите асимметрию маршрута: иногда media уходит через один WAN, а ответ возвращается через другой.

Фикс один: сначала локализуйте, где именно теряется RTP — на клиенте, на NAT или на SBC. Отказоустойчивость — это не роскошь, а базовое требование к SIP-платформе.
Этот пост опубликован в Telegram-канале Работа с API телефонии. Подписаться можно по ссылке: @phone_api_gateway_arb.
tech

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

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

start

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

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

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