Skip to end of metadata
Go to start of metadata

В сборке 5.2.660 была добавлена поддержка IPv6 для WebRTC. Это привело к изменению настроек и процедуры установки соединения.

Настройка

По умолчанию, поддержка IPv6 неактивна. Чтобы включить эту возможность, необходимо:

  • в файле настроек flashphoner.properties указать внешний IPv6 адрес сервера и разрешить использование IPv6 кандидатов
ip_v6=2a03:b0c0:3:e0::42e:c002
ice_add_ipv6_candidate=true
  • в файле настроек wcs-core.properies разрешить использование IPv6 стека
-Djava.net.preferIPv4Stack=false

Кроме того, следующие настройки IP адресов позволяют указать через запятую IPv4 и IPv6 адреса для привязки

  • hls.address
  • http.address
  • https.address
  • rtmfp.address
  • rtmp.address
  • rtsp.address
  • rtsp_client_address
  • ws.address
  • wss.address

Процедура установки соединения

Установка соединения для приема/передачи медиа трафика по WebRTC выглядит следующим образом:

1. Сервер ожидает входящих запросов Binding request на IPv4 и IPv6 интерфейсах

2. При получении запроса с атрибутом USE-CANDIDATE кандидат помечается как номинируемый, при условии, что будет получен Bindind Responce от этого кандидата

3. На каждый Binding Request от браузера отправляется Binding Response.

4. Одновременно, сервер отправляет в сторону браузера Binding Request. При необходимости, запросы повторяются с интервалом, указанным в настройке (по умолчанию 1500 мс)

stun_freshness_period=1500

5. При получении Bindind Response от первого кандидата, запускается интервал ожидания других кандидатов, указанный в настройке (по умолчанию 1000 мс)

stun_wait_candidate_timeout=1000

6. По истечении этого интервала, приоритетному кандидату отправляется DTLS Client Hello

При соединении с браузером Safari, приоритет отдается IPv4 кандидатам, если только не возникает проблем в процедуре STUN-DTLS с таким кандидатом. Таким образом, в Safari, если клиент имеет два интерфейса IPv6 и IPv4, оба интерфейса работают и трафик между клиентом и сервером не заблокирован, будет использоваться IPv4. В остальных браузерах (выше приведены примеры трафика для Chrome) приоритет отдается IPv6 кандидатам.