Термин
TURN
Traversal Using Relays around NAT (RFC 8656, февраль 2020). Медиа-релей, через который два WebRTC peer-а обмениваются пакетами, когда прямой peer-to-peer не получается из-за строгого NAT или файрвола.
TURN – это fallback, когда hole punching через STUN не смог завести двух peer-ов. TURN-сервер стоит на публичном интернете с известным IP, оба peer-а открывают к нему обычные клиент-инициированные UDP- (или TCP, или TLS-) соединения, дальше каждый peer шлёт своё медиа TURN-серверу, и тот пересылает другому peer-у. Для каждой стороны TURN-сервер выглядит как обычный сервер, поэтому любой NAT и большинство файрволов пропускают трафик.
TURN стоит трафика – каждый байт медиа идёт через релей дважды – и это значит, что TURN-bandwidth становится главной статьёй расходов self-hosted WebRTC-сервиса. Примерно 10–25 % сессий в реальной эксплуатации не могут установить прямой peer и падают на TURN, доля зависит от mix-а сетей (корпоративные поднимают, домашний ШПД снижает). Операторы обычно деплоят TURN в нескольких регионах и роутят каждую сессию на ближайший, чтобы минимизировать RTT.
TURN умеет UDP, TCP и TLS over TCP/443. TLS-over-443 – обход самых строгих корпоративных файрволов: замаскированный под HTTPS, он проходит почти везде. Open-source TURN – coturn (индустриальный дефолт) и TURN от Pion. Managed TURN – Twilio, Xirsys, Cloudflare TURN – типичный выбор команд, не желающих эксплуатировать инфраструктуру самим.
Считаете параметры для своего продукта?
Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.