WebRTC - это технология, которая ориентирована на передачу видео и голоса между браузерами. Основные преимущества стандарта:

Установить соединение – довольно трудная задача, так как компьютеры не всегда обладают публичными IP адресами, то есть адресами в интернете. WebRTC использует протокол ICE для решения проблемы работы в частной сети, который, правда, требует использования дополнительных серверов (STUN, TURN). При установке соединения в WebRTC не указывается адрес того узла, с которым нужно соединиться. Устанавливается сначала логическое соединение, а не физическое. Но это не покажется странным, если не забывать, что мы используем сторонний сигнальный механизм - ICE. Через некоторые callback‘и WebRTC сообщает нам Ice candidate объекты. А почему кандидатов может быть много? Потому что расположение в сети может определяться не только своим внутренним IP адресом, но также и внешним адресом маршрутизатора, и не обязательно одного, а также адресами TURN серверов. 

STUN сервер – это просто сервер в интернете, который возвращает обратный адрес, то есть адрес узла отправителя. Узел, находящийся за роутером, обращается к STUN серверу, чтобы пройти через NAT. Пакет, пришедший к STUN серверу, содержит адрес источника – адрес роутера, то есть внешний адрес нашего узла. Этот адрес STUN сервер и отправляет обратно. Таким образом, узел получает свой внешний IP адрес и порт, через который он доступен из сети. Далее, WebRTC с помощью этого адреса создает дополнительного кандидата (внешний адрес роутера и порт). Теперь в таблице NAT роутера есть запись, которая пропускает к нашему узлу пакеты, отправленные на роутер по нужному порту.

Рассмотрим этот процесс на примере:

 


Маршрутизатор обычно содержит таблицу NAT. Это специальных механизм, разработанный для того, чтобы узлы внутри приватной сети роутера смогли обращаться, например, к веб-сайтам. Веб-клиент шлет запрос на адрес сервера Webitel. Сначала данные попадают на роутер (NAT), а точнее на его внутренний интерфейс 192.168.20.1. После чего, роутер запоминает адрес источника (192.168.20.20) и порт запроса (18899), заносит его в специальную таблицу NAT, затем изменяет адрес источника на свой(192.168.20.20 → 1.2.3.4) и на новый свободный порт (7834). Далее, по своему внешнему интерфейсу роутер пересылает данные непосредственно на Webitel. Webitel обрабатывает данные, генерирует ответ и отправляет обратно. Отправляет роутеру 1.2.3.4 на порт 7834, так как именно он стоит в обратном адресе (роутер подменил адрес на свой). Роутер получает данные, смотрит в таблицу NAT и пересылает данные узлу 192.168.20.20 на порт 18899. Роутер выступает здесь как посредник.

Итак, в начале имеем пустую таблицу NAT.

Internal IP

Internal PORT

External IP

External PORT





 После первого исходящего запроса, мы получаем такою таблицу NAT:

Internal IP

Internal PORT

External IP

External PORT

192.168.20.20188991.2.3.47834

Если таблица NAT очищается очень часто (из-за большого количества абонентов в сети), тогда роутер не сможет обработать входящий запрос клиенту и все входящие звонки будут отбрасываться, пока клиент не сделает следующий исходящий запрос для создания новой записи в таблице NAT.

Требования к оборудованию и сети

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

Важно: Загруженность процессора желательна не более 50%.


Стандартное
качество (SD)
Высокое
качество (HQ)
Улучшенное
качество (ED)
Высокой четкости
качество (HD)
HD (при 60 fps) или FullHD
Операционная системаMicrosoft Windows 10, macOS 10.12+, Linux
ПроцессорIntel Celeron G3xxx (от 2,7 ГГц);

Intel Celeron 3xxxU (от 1,5 ГГц);

AMD Ryzen 3 2хххU (от 2,5 ГГц)
Intel Celeron G3xxx (от 2,7 ГГц);

Intel Celeron 3xxxU (от 1,7 ГГц);

AMD Ryzen 3 2хххU (от 2,5 ГГц)
AMD Athlon 64 X2 (от 2,4 ГГц);

Intel Celeron G3xxx (от 2,7 ГГц);

Intel Pentium 4xxxY (от 1,5 ГГц);

AMD Ryzen 3 2хххU (от 2,5 ГГц)
Intel Core i5-4xxM (от 2,4 ГГц);

Intel Core i5-2xxx (от 2,3 ГГц);

Intel Pentium 4xxxU (от 2,1 ГГц);

AMD Ryzen 3 2хххU (от 2,5 ГГц)
Intel Core i7-2xxx (от 3,0 ГГц);

Intel Pentium G4xxx (от 2,9 ГГц);

Intel Core i5-7xxxU (от 2,6 ГГц);

AMD Ryzen 3 1ххх (от 3,1 ГГц)
Оперативная память1 ГБ2 ГБ4 ГБ
Сеть256 кбит/с в обоих направленияхот 512 кбит/с в обоих направленияхот 1 Мбит/с в обоих направленияхот 2 Мбит/с в обоих направленияхот 4 Мбит/с в обоих направлениях


Для WebRTC критична низкая потеря и минимальные задержки пакетов. Технологии беспроводной связи, такие как 3G, 4G, EDGE, спутниковая связь архитектурно предполагают большие (по сравнению с проводным доступом) задержки и потери. Кроме того, качество связи сильно зависит от уверенности приема в данном конкретном месте и загруженности сети поставщика сервиса (провайдера). По своему опыту, мы не рекомендуем использование беспроводных технологий доступа в Интернет, т.к. они часто не могут предоставить необходимое качество связи.

Рекомендуем использовать браузер Google Chrome или Mozilla Firefox.

Технология WebRTC не поддерживает работу клиентов за HTTP Proxy, для корректной передачи голоса должно быть разрешено подключение клиентов за NAT на порты TCP 443, UDP 1024-65535 сервера телефонии.

Поскольку весь голосовой и сигнальный трафик между клиентом и сервером шифруется с помощью Datagram Transport Layer Security (DTLS), не допускается перехват трафика с подменой сертификатов либо использование антивирусного ПО с данным функционалом.

Краткая сводка

Здесь приведены некоторые утверждения о сущностях WebRTC: