Короткое определение

Traversal Using Relays around NAT (RFC 8656, февраль 2020). Медиа-релей, через который два WebRTC-пира обмениваются пакетами, когда прямой обмен между ними невозможен из-за строгого NAT или файрвола.

TURN – это резервный механизм, когда пробивка дыр через STUN не позволяет установить соединение между двумя участниками (peer). TURN-сервер размещён в публичной сети и имеет известный IP-адрес. Оба участника устанавливают обычные клиентские соединения с ним по UDP (или TCP, или TLS), после чего каждый из них отправляет своё медиапотоковое содержимое на сервер, а тот пересылает его второму участнику. Для каждого из них TURN-сервер выглядит как обычный сервер, поэтому любой NAT и большинство файрволов пропускают такой трафик.

TURN стоит трафика – каждый байт медиа проходит через релей дважды, и это делает пропускную способность TURN главной статьёй расходов self-hosted WebRTC-сервиса. Примерно 10–25 % сессий в реальных условиях не могут установить прямой peer-to-peer-соединение и падают на TURN, доля зависит от состава сетей (корпоративные сети повышают её, домашний ШПД снижает). Операторы обычно развёртывают TURN в нескольких регионах и направляют каждую сессию на ближайший, чтобы минимизировать RTT.

TURN поддерживает UDP, TCP и TLS поверх TCP/443. TLS поверх 443 – способ обойти самые строгие корпоративные файрволы: замаскированный под HTTPS, он проходит практически везде. Open-source решения – coturn (индустриальный стандарт) и TURN от Pion. Управляемые сервисы – Twilio, Xirsys, Cloudflare TURN – типичный выбор команд, которым не хочется самостоятельно эксплуатировать инфраструктуру.

Считаете параметры для своего продукта?

Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.