WebRTC: чем отличается сервер TURN от прокрутки собственного пользовательского сервера, через который проходит связь? - PullRequest
0 голосов
/ 11 октября 2019

Поняв WebRTC, я обнаружил одну вещь, которую трудно понять о серверах TURN. Позвольте мне кратко повторить то, что я понимаю.

Сервер сигнализации: - это пользовательская (не указанная в протоколе) реализация передачи пакетов SDP для согласования соединения WebRTC. Самая забавная / дурацкая реализация - это когда вы копируете / вставляете SDP-пакеты в виде простого текста, как объяснено Chris Ball (sidenote: кто сказал, что «реализация» означает, что вам нужно что-то программировать? :-D).

Сервер STUN: сообщает вам ваш доступный порт IP +. Пока пока NAT! О, только в 80% случаев.

Остальные 20%, насколько я понимаю, TURN-серверы : сервер, доступный для обеих (или более) сторон P2P-соединения, которые передают данные изэти стороны через сервер TURN (обход через ретрансляторы вокруг Nat) и отправляет его другой стороне. Это описано в RFC 5766 .

Моя ситуация (и вопрос, который вытекает из этого)

  1. У меня есть сервер сигнализации(ууу!)
  2. У меня есть сервер STUN (ура!)
  3. У меня есть сервер NodeJS, работающий с Socket.io на случай сбоя P2P через сервер сигнализации и STUN. Он просто получает входящий трафик и транслирует его тому, кому нужно его прослушать.

Я знаю, что мой сервер - это пользовательская программа, которая выполняет те же функции, что и сервер TURN.

Мой вопрос : Чем такой сервер, созданный на заказ, отличается от сервера TURN?

Примечание : в моем случае это NodeJS + Socket.io, но это может быть любой пользовательский сервер (для интереса я также создал реализацию Ruby / Rails с WebSockets без длинного опроса HTTP в качестве запасного варианта).

Ответы [ 2 ]

1 голос
/ 12 октября 2019

Обычно socket.io и Node используются только для сигнализации (и отправки пользовательских сообщений). Простой экземпляр CoTurn может работать на скорости 5 $ в секунду.

Помимо использования в качестве сервера поворотов, он также предлагает функцию оглушения, но по моему опыту всегда полезно использовать общедоступный Google STUN (за исключениемКитай, это не достижимо).

Вопрос в следующем: проверили ли вы загрузку сети и системы с вашей реализацией и сравнили ее с классической настройкой TURN?

1 голос
/ 12 октября 2019

Ну, может быть, потому что нам не нужны дополнительные затраты на создание сервера ретрансляции с нуля, где есть хорошие и бесплатные реализации, такие как coturn и restund . Вам потребуется потратить довольно много времени на достижение того же уровня производительности и масштабируемости.

Кроме того, при наличии сервера TURN вам не нужен отдельный сервер STUN.

...