searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享

P2P、SFU 和 MCU - WebRTC 架构解释

2023-04-18 00:34:49
370
0

 

目录

  1. 体系结构选项
  2. P2P(点对点/网状)
  3. SFU(选择性转发单元)
  4. MCU(多点控制单元)
  5. 混合架构

体系结构选项

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

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

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

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

P2P(点对点)

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

以下是 P2P(点对点)架构的示意图,有 4 个参与者:

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

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

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

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

优点

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

弊:

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

结论:

上述缺点使P2P架构主要针对1-1呼叫可靠,并且不可扩展。实际上,如果会议中有 2 名以上的参与者,您不会经常看到使用 P3P 架构的视频会议提供商。

SFU(选择性转发单元)

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

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

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

这样就可以节省大量的下行链路带宽,即使参与者的平均互联网连接,许多参与者也可以显示在同一网格中。

从上图中可以看出,每个参与者发布一次到 SFU 媒体服务器,并接收其他每个参与者的流。

优势:

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

弊:

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

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

SFU 在上传过程中比 P2P 效率更高,可扩展性也更高。

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

MCU(多点控制单元)

MCU(多点控制单元)架构中,每个参与者仅在其流发送到中央服务器后发布其流。但与SFU不同的是,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。

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

优点:根据情况,结合多种架构可以从所有架构的优势中受益。使用 P2P 进行 1-1 呼叫可以节省服务器资源,因为没有中间服务器。

缺点:将多个体系结构组合到同一应用程序中会增加代码复杂性和维护成本。在运行呼叫过程中在 P2P 和其他架构 (SFU/MCU) 之间平滑过渡并非易事。

 

0条评论
0 / 1000
j****e
12文章数
0粉丝数
j****e
12 文章 | 0 粉丝

P2P、SFU 和 MCU - WebRTC 架构解释

2023-04-18 00:34:49
370
0

 

目录

  1. 体系结构选项
  2. P2P(点对点/网状)
  3. SFU(选择性转发单元)
  4. MCU(多点控制单元)
  5. 混合架构

体系结构选项

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

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

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

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

P2P(点对点)

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

以下是 P2P(点对点)架构的示意图,有 4 个参与者:

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

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

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

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

优点

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

弊:

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

结论:

上述缺点使P2P架构主要针对1-1呼叫可靠,并且不可扩展。实际上,如果会议中有 2 名以上的参与者,您不会经常看到使用 P3P 架构的视频会议提供商。

SFU(选择性转发单元)

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

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

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

这样就可以节省大量的下行链路带宽,即使参与者的平均互联网连接,许多参与者也可以显示在同一网格中。

从上图中可以看出,每个参与者发布一次到 SFU 媒体服务器,并接收其他每个参与者的流。

优势:

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

弊:

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

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

SFU 在上传过程中比 P2P 效率更高,可扩展性也更高。

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

MCU(多点控制单元)

MCU(多点控制单元)架构中,每个参与者仅在其流发送到中央服务器后发布其流。但与SFU不同的是,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。

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

优点:根据情况,结合多种架构可以从所有架构的优势中受益。使用 P2P 进行 1-1 呼叫可以节省服务器资源,因为没有中间服务器。

缺点:将多个体系结构组合到同一应用程序中会增加代码复杂性和维护成本。在运行呼叫过程中在 P2P 和其他架构 (SFU/MCU) 之间平滑过渡并非易事。

 

文章来自个人专栏
大前端
12 文章 | 2 订阅
0条评论
0 / 1000
请输入你的评论
0
0