P2P、SFU 和 MCU – WebRTC 架构解释

在本文中,我们将研究WebRTC架构实际工作原理的细节,以便外行人也能理解它。

WebRTC是一个开源项目,它使用点对点交互式网络应用程序将设备连接在一起。如果您通过网络浏览器进行过浏览器内视频通话或玩实时游戏,WebRTC 可能是推动该网络应用程序工作方式的后端技术的原因。

架构选项

每个视频会议解决方案的核心都是发送和接收参与者的视频/音频流的架构。例如,如果视频会议中有 N 个参与者,他们每个人都需要看到/听到所有其他 N-1 个参与者的视频/音频。

这可以通过不同的方式实现,但在实践中主要使用三种架构:

  • P2P(点对点/网状),
  • SFU(选择性转发单元),
  • MCU(多点控制单元)。

混合方法也是可能的——根据会议参与者的数量使用不同类型的架构。这更像是一种优化,将在本文末尾进行介绍。

P2P(点对点)

P2P(点对点)有时也称为网状架构。 这是最基本的架构,很容易推理。会议中的每个参与者都是对等点,并通过与每个参与者建立对等连接将他们的视频/音频发送给所有其他对等点。

这是具有 4 个参与者的 P2P(点对点)架构图:数字 Samba P2P(点对点)WebRTC-min-png.png

没有中间媒体服务器,因此默认实现隐私(端到端加密)。虽然这听起来不错,但 P2P 架构有一个非常明显的缺点 – 上传带宽没有得到明智的使用。

例如,如果呼叫中有 N 个参与者,则每个参与者需要建立 N-1 个对等连接并发送 N-1 倍的视频/音频,总共 N*(N-1) 个对等连接。

尽管如此,许多家庭仍然拥有不对称的互联网连接 – 例如 ADSL(非对称数字用户线),与下载速度相比,上传速度受到严重限制。即使你有很好的上传速度,在许多人共享同一个互联网连接的办公室环境中仍然会出现问题。

实际上,P2P(点对点)架构主要适用于 2 人参加会议的 1-1 通话。在那种情况下,P2P 仍然是最优的,因为 2 个参与者中的每个参与者都只发送一次他们的音频/视频,只发送一次他们的视频/音频。

优点

  • 隐私很容易实现– 默认情况下所有视频/音频流都是 E2EE(端到端加密),因为没有可以监视视频/音频的中间基础设施。 
  • 复杂性和托管成本也很低,因为没有中间媒体服务器可以托管/实施和关心。

缺点:

  • 上传带宽使用不当,即使会议参与者人数很少,也很容易饱和。
  • 客户端的 CPU(中央处理单元)使用率会明显更高,因为浏览器需要对视频进行 N-1 次编码才能将其发送给 N-1 个其他参与者。除非你有一台真正强大的机器,否则性能很容易受到影响。

结论:

上述缺点使得 P2P 架构主要针对 1-1 呼叫可靠且不可扩展。实际上,如果会议参与者超过 3 人,您将不会经常看到使用 P2P 架构的视频会议提供商。

SFU(选择性转发单元)

这种架构是最近视频会议解决方案的主要选择。有中央SFU 媒体服务器接收发布的流,然后在不修改它们的情况下将它们路由到其他参与者。

虽然显然一些复杂性转移到了服务器端,但它是对P2P的巨大改进,因为它解决了 P2P 遭受的上传带宽和可扩展性问题。

联播通常与SFU(选择性转发单元)一起使用,其中每个参与者将他们的流的多个版本发布到SFU (选择性转发单元) ,每个版本具有不同的质量。然后SFU (选择性转发单元)可以决定将低质量流版本路由到互联网连接较差的参与者。或者仅在参与者在本地最大化流时才提供流的高质量版本。

这样可以节省大量的下行链路带宽,并且即使参与者具有普通的互联网连接,也可以在同一个网格中显示许多参与者。

数字 Samba - WebRTC - SFU(选择性转发单元)
从上图可以看出,每个参与者向 SFU 媒体服务器发布一次,并且还接收每个其他参与者的流。

好处:

  • 参与者只发布一次– 到 SFU 服务器。这使得 SFU 成为上传带宽友好的架构,与 P2P(网状)不同。
  • 比 P2P 架构更具可扩展性。可以使用联播,其中根据可用参与者的 CPU 和带宽路由不同的流版本。
  • 灵活的布局——参与者可以决定他们想要接收哪些流、在何处显示它们以及以何种质量显示。

缺点:

  • 中间媒体服务器会增加服务器端的成本/复杂性。
  • 默认情况下未实现 E2EE(完全隐私),因为中间媒体服务器在转发时可以访问原始流字节。与 P2P 架构相比,这是一个缺点,但可以通过在将流字节发送到SFU(选择性转发单元)媒体服务器之前使用自定义密钥加密流字节来缓解。当然,这意味着接收方需要自定义解密。

结论:SFU (选择性转发单元)是当今视频会议中部署最流行的架构。

SFU 在上传和可扩展性方面比 P2P 更高效。

此外,虽然用户仍然需要下载和解码每个其他参与者的流,但可以应用联播技术以允许在平均连接和机器上在网格中显示多达大约 50 个参与者。

MCU (多点控制单元)

MCU(多点控制单元)架构中,每个参与者仅在他们的流被发送到中央服务器时才发布他们的流。但与SFU不同的是,MCU(多点控制单元)中央服务器具有混合器的作用——将所有接收到的流合并为一个流。

然后所有参与者都使用这个混合流,而不是单独订阅每个其他参与者的流。

数字 Samba WebRTC - MCU(多点控制单元)

优点

  • 每个参与者只订阅一个流——所有其他参与者的组合布局。这在客户端的 CPU 和带宽效率非常高(甚至比SFU更高效),因为浏览器只解码一个流。
  • 由于在客户端只消费一个流,因此很容易推理架构并在前端集成/调试它。另一方面,复杂性主要转移到了后端。

缺点

  • 布局通常不灵活——中央服务器确定所有参与者都能看到的固定布局。例如,一个参与者不能重新排序流或最大化另一个参与者的流的质量。
  • 由于所有流的混合,与 SFU 相比,服务器端的 CPU 使用率和复杂性要高得多。房间的缩放主要是垂直的——升级 CPU 以处理越来越多参与者的混合。当然,垂直扩展也有它的缺点,因为要找到越来越强大和可靠的机器既困难又昂贵。
  • 与 SFU 相比,将所有流混合到一个结果流中会引入稍大的延迟,因为 SFU 仅中继流。另外,如果 MCU 布局出现错误,每个人都会受到影响。

结论:虽然如果唯一关心的是客户端资源使用, MCU (多点控制单元)是最好的架构,但实际上MCU 输给了 SFU,因为将其部署在服务器端的成本至少高出 10 倍。

解码/编码和混合比像 SFU 这样的路由/中继流要费力得多。而且由于公司通常无法在服务器端多花至少 10 倍的钱,因此 SFU 是在大多数情况下获胜的合理折衷方案。

混合架构

在混合方法中,根据呼叫参与者的数量使用不同的体系结构。P2P 通常用于 1-1 通话,在第三人进入通话后应用程序切换到 SFU。

这样一来,一些服务器带宽/资源就可以在 1-1 通话期间节省下来,这可能是一个不可忽略的节省,因为 1-1 通话在人们中非常流行——根据我们的统计和研究,大约 50% 的通话是 1- 1.

当然,该百分比可能因产品重点而异——显然,针对大型网络研讨会的产品不会有那么多的一对一通话。

优点结合多种架构可以根据情况受益于所有架构的优势。使用 P2P 进行一对一通话可以节省服务器资源,因为没有中间服务器。

缺点:将多个架构组合到同一个应用程序中会增加代码复杂性和维护成本。在 P2P 和其他架构 (SFU/MCU) 之间的平滑过渡在一个正在运行的调用中并不是完全微不足道的。

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

  • WebRTC 架构格局正在发生变化

    现在有一种新型的 WebRTC 应用程序架构正在发展,称为 WebRTC Unbundling,尽管它可能不适用于所有应用程序场景,但至少在开发新的实时视频开发项目时应该考虑一下它。在过去,三种不同类型的 WebRTC 应用架构即符合标准的 WebRTC、开源媒体服务器和称为 CPaaS 的商业媒体服务器是基于 WebRTC 开发的选项,这三个仍然是有效的架构选择,WebRTC Unbundling 只是第四个选择,可以认为它是符合标准的 WebRTC选项的另一种形式。

    2022年4月28日

发表回复

登录后才能评论