Peer-to-peer и архитектура

Что такое одноранговый (peer-to-peer) голосовой чат?

Peer-to-peer голосовой чат передаёт звук напрямую между устройствами, без медиасервера. Как он работает, что даёт для приватности и где у него есть ограничения.

  • Автор: Voxal
  • Обновлено
  • 4 мин чтения
Двое людей в наушниках за ноутбуками, между ними иллюстрированный глобус и связанные звуковые волны.

Peer-to-peer (P2P) голосовой чат отправляет ваш голос напрямую на устройства других участников, а не пропускает его через центральный медиасервер. Сервер всё же может помогать устройствам находить друг друга, а ретранслятор может подключиться, когда прямой путь заблокирован, но нет сервера, задача которого принимать, микшировать и перераспределять аудио всех участников.

Эта статья написана простым языком: что это значит, как устанавливается соединение, что меняется для приватности и где есть ограничения. Технические подробности (кодеки, SFU и групповое видео) смотрите в руководстве по WebRTC, SFU и кодекам.

Что означает peer-to-peer?

Peer-to-peer, часто сокращённо P2P, означает, что устройства участников общаются напрямую друг с другом, а не отправляют голосовой звук через центральный медиасервер.

Представьте двух друзей, которые разговаривают онлайн. При прямом соединении устройство одного отправляет звук на устройство другого, а тот может ответить по собственному соединению.

Нет центрального аудиосервера, который должен принимать, обрабатывать и перераспределять каждый голосовой поток.

На практике для прямого соединения может понадобиться дополнительная инфраструктура. Устройства могут находиться за роутерами, межсетевыми экранами или NAT операторского уровня, поэтому такие технологии, как ICE и STUN, помогают найти работоспособный путь. Если прямой путь установить не удаётся, TURN-ретранслятор может пересылать зашифрованный трафик, не декодируя звук.

Таким образом, peer-to-peer не означает, что приложение вообще не использует серверы. Это значит, что медиапуть может оставаться прямым, а ретрансляторы применяются только при необходимости.

Как работает peer-to-peer голосовой чат?

Современные голосовые приложения в браузере обычно используют WebRTC, набор технологий для общения в реальном времени.

Упрощённо процесс соединения выглядит так:

  1. Найти участников. Приложение использует механизм сигнализации, чтобы обменяться данными для соединения.
  2. Найти сетевой путь. ICE собирает и проверяет возможные адреса для соединения, при необходимости используя STUN.
  3. Установить соединение. Устройства согласуют подходящий путь: напрямую, если возможно, или через ретранслятор, если необходимо.
  4. Передать звук. Сигнал с микрофона кодируется, передаётся как медиапоток в реальном времени и декодируется принимающим устройством.
  5. Сохранить отзывчивость разговора. Соединение подстраивается под меняющиеся условия сети и управляет синхронизацией, джиттером и потерей пакетов.

WebRTC использует медиатранспорт на основе RTP и включает механизмы защищённой связи в реальном времени. Точный путь соединения зависит от сетей участников и настроек приложения.

Peer-to-peer и голосовой чат через сервер

Обе архитектуры могут обеспечивать отличную голосовую связь. Они просто идут на разные компромиссы.

Схема, сравнивающая звук, передаваемый напрямую между двумя участниками, и звук, проходящий через центральный медиасервер.
Упрощённые аудиопути: прямое соединение между участниками слева и распределение через медиасервер справа. Соединения между участниками при необходимости всё равно могут использовать TURN-ретранслятор.

Peer-to-peer голос

В peer-to-peer архитектуре каждый участник может отправлять звук напрямую остальным участникам.

Возможные преимущества:

  • Не нужен центральный медиасервер для обработки или перераспределения голоса.
  • Прямой медиапуть, который может сократить лишнюю маршрутизацию.
  • Меньшая зависимость от центрального аудиосервиса.
  • Чёткое разделение между координацией соединения и передачей звука.

Есть и компромиссы. Каждому участнику может потребоваться передавать звук нескольким другим участникам, поэтому требования к пропускной способности растут вместе с размером комнаты. Кроме того, сетевые ограничения могут мешать прямым соединениям и требовать ретранслятора.

Голос через сервер

В архитектуре с сервером участники отправляют звук на медиасервер, который распространяет его остальным слушателям.

Это может упростить групповую раздачу и централизовать некоторые эксплуатационные задачи. Однако требуется медиаинфраструктура, а сервер становится частью пути доставки звука.

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

Как Voxal использует peer-to-peer звук

Voxal создан для лёгкого и спонтанного общения. Вы можете создать голосовую комнату или войти в неё без регистрации, а затем использовать push-to-talk (передачу по нажатию кнопки) или режим «свободные руки» в зависимости от того, как вам удобнее общаться.

Голосовой звук в Voxal всегда остаётся peer-to-peer. Он никогда не проходит через необязательный видео-SFU, даже если комната использует эту инфраструктуру для медиа с камеры или демонстрации экрана.

Voxal использует сигнализацию, чтобы координировать участников и устанавливать соединения. Путь сигнализации и путь звука разделены: то, что соединение координируется через сервер, не означает, что сервер получает сам звук.

Если прямое соединение установить не удаётся, может использоваться TURN-ретранслятор. Он пересылает зашифрованный трафик и не декодирует звук. В документации по TURN и ICE описано, как Voxal выбирает путь.

Два участника обмениваются зашифрованными медиаданными через TURN-ретранслятор, который пересылает трафик, не декодируя звук.
TURN-ретранслятор предоставляет запасной сетевой путь для зашифрованного голосового трафика, когда прямое соединение установить не удаётся.

Voxal также поддерживает видео и демонстрацию экрана, у которых в больших комнатах другие требования к маршрутизации. Эти функции могут использовать необязательный Selective Forwarding Unit (SFU) в зависимости от настроенного предпочтения маршрутизации видео. Голос в любом случае остаётся peer-to-peer.

Более ли приватен peer-to-peer голосовой чат?

Peer-to-peer связь может сократить число систем, участвующих в доставке голоса, но сам по себе этот термин не гарантирует приватность.

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

В Voxal голос передаётся с помощью защищённых медиамеханизмов WebRTC, а TURN-ретранслятор пересылает зашифрованные медиаданные, не декодируя их. Это отличается от SFU, который технически может получить доступ к принимаемым видеоданным, чтобы выборочно пересылать их дальше.

Важно различие в том, к чему имеет доступ каждый компонент, а не просто в том, есть ли сервер.

Когда peer-to-peer голосовой чат полезен?

Peer-to-peer голос может хорошо подойти для:

  • Разговоров в небольших группах.
  • Игр и совместных занятий.
  • Временных голосовых комнат.
  • Лёгкого общения в команде.
  • Приложений, которые хотят избежать централизованной обработки голосовых медиаданных.

Большие комнаты создают дополнительные сложности с пропускной способностью и управлением соединениями. Это одна из причин, почему голос, видео и демонстрацию экрана не стоит автоматически считать одной и той же сетевой задачей.

Попробуйте Voxal

Voxal сочетает peer-to-peer голосовой звук с push-to-talk, общением в режиме «свободные руки», шумоподавлением и дополнительными видео и демонстрацией экрана.

Если хотите попробовать голосовую комнату без регистрации, откройте Voxal в браузере.

Чтобы глубже разобраться в сетевой части общения в реальном времени, продолжите чтением нашего руководства по WebRTC, SFU и голосовым кодекам.

Читайте также: Что такое push-to-talk? Практическое руководство · WebRTC, SFU и голосовые кодеки: объяснение

Дополнительные материалы

Назад в блог