Какой тип соединения существует между SFU и клиентским компьютером?

Я много читал о WebRTC, ICE, Stun and Turn.

Теперь, когда дело доходит до SFU, я не уверен, какое соединение устанавливается между клиентом (браузером конечного пользователя) и SFU (это соединение webrtc ??). Может кто-нибудь уточнить поток?

Мое предположение: когда это архитектура на основе SFU. SFU и клиент устанавливают соединение webrtc и отправляют данные друг другу. SFU знает всех людей в текущей комнате и соответствующим образом отправляет данные. Первоначальная сигнализация передает ледяных кандидатов сервера sfu клиенту и наоборот.

Я прав ?


person Anoosh    schedule 22.11.2020    source источник


Ответы (1)


Да, соединение между клиентом и SFU - это соединение WebRTC. SFU действует как одноранговая конечная точка.

В спецификации w3c не делается различий между одноранговым узлом и SFU, за исключением того, что не учитывается определение приема simulcast в браузерных клиентах, для чего вам понадобится SFU (или MCU).

Типичный поток

  1. Do a regular offer/answer exchange between each client and the SFU end-point over signaling.
    • If the server is the offerer it sends an offer to receive simulcast to the client. A normal offer, except the client can tell after setRemoteDescription it will be sending multiple encodings (layers) of a single video track:
    pc.getSenders()[0].getParameters().encodings.length // > 1 means simulcast
    
    • Если клиент является оферентом, он должен создать предложение для одновременной передачи, например нравится:
    pc.addTransceiver(videoTrack, {sendEncodings: [
      {rid: "hi"},
      {rid: "mid", maxBitrate: 500000, scaleResolutionDownBy: 2},
      {rid: "low", maxBitrate: 150000, scaleResolutionDownBy: 4},
    ]});
    
    You don't have to use simulcast for video, but it's common. Sending of audio is simpler and typically negotiated as well, along with client reception of both.
  2. Кандидаты ICE обмениваются как обычная часть этих переговоров (между клиентом и SFU).
  3. После подключения нескольких клиентов SFU (Selective Forwarding Unit) обычно принимает аудио и (одновременное вещание, также известное как многоразмерное ) видео от каждого участника, а взамен обычно отправляет каждому участнику большое видео и аудио от того, кто в данный момент говорит, и небольшие видео от (некоторой части) всех остальных. Специальная логика выборочной пересылки обычно управляется приложением через сигнализацию.

У каждого участника есть зашифрованное соединение, которое завершается в промежуточном блоке SFU, а не друг с другом. Это означает, что даже несмотря на то, что WebRTC всегда зашифрован, ваше соединение с другими участниками технически не зашифровано. Поэтому убедитесь, что вы доверяете своей SFU или контролируете ее. Стандартные решения для e2ee через SFU находятся в разработке.

person jib    schedule 22.11.2020