如何计算WebRTC的TURN服务器带宽?

4
我已经开发了一个使用webrtc的简单多对多视频会议网站,现在需要配置TURN服务器。不确定如何选择带宽大小。
每个用户发送的数据最多为500kbps。参与者最多为300人,每次会议的最长时间约为200分钟,同时主持人最多为200人。
我在Google上查阅了相关资料,大约80% - 85%的情况下我们不需要TURN服务器。
那么对于这种情况,我需要多少带宽?只使用简单的coturn服务器是否足够?如果不够用,应该在哪里购买TURN服务器?或者能否自行创建适合这种配置的TURN服务器?
1个回答

8
首先,WebRTC需要每个参与者之间建立点对点连接。如果您的使用案例中每个房间/会话有300位参与者,则每个参与者必须从其他299位参与者上传/下载500kbps数据,这是相当大的网络流量。据我所知,即使谷歌在幕后使用WebRTC,它也将Google Meet/Hangout视频通话限制在25名参与者。
如果有100多名参与者,我怀疑您是否想要使用WebRTC构建视频会议系统,但现在我会帮助您达到您想要的数字,并在答案结尾解释为什么这可能不切实际。
使用您的数字,假设20%的用户(A组)由于其网络设置(例如在NAT后面)需要TURN服务器,而其他80%的用户(B组)将能够彼此建立直接的点对点连接。
1. A组中的用户将需要TURN才能连接到A组中的另一个用户。 2. A组中的用户将需要TURN才能连接到B组中的另一个用户。 3. B组中的用户将需要TURN才能连接到A组中的另一个用户。 4. B组中的用户不需要TURN才能连接到A组中的用户,在这种情况下,直接点对点连接将起作用。
根据您的数字,如果80%的用户属于B组,则#4发生的几率约为64%(80%* 80%)。因此,64%的网络流量将是不需要TURN的点对点连接,而其余36%的流量将需要TURN服务器中继视频数据。
一名用户需要与其他299名用户建立连接,其中36%的连接将通过TURN路由。这相当于大约107个连接通过TURN路由。为简单起见,假设每个用户的299个连接中有100个需要TURN中继。
您说每个用户发送的最大数据量为500kbps。由于每个用户需要通过TURN向其他100个用户发送视频,因此这相当于大约50000kbps或50Mbps。因此,平均每个用户通过TURN消耗50Mbps的网络吞吐量。(并且另外100Mbps用于直接点对点连接)
由于每个会话中有300个用户/参与者,因此将50Mbps乘以300,得到每秒由所有参与者使用的15Gbps或15Gb/s的总TURN流量。
您说会议最长为200分钟,因此在200分钟会话期间交换的总流量将是15Gb/s * 60s/m * 200 = 180000 Gb = 22500 GB。
FYI,云供应商对网络流量收费约为每GB 0.07美元,因此需要最多22500 GB网络流量的完整200分钟会话可能需要花费1575美元。

WebRTC适用于参与者数量较少的房间/会话,因为每个参与者都必须连接到所有其他参与者,所需的连接数以O(n^2)的速度增加,其中n是参与者数量。

您可能需要考虑使用SFU / MFU或调整您的数字使其更加现实。 (例如,您真的需要300个参与者同时共享视频吗?)更不用说很少有用户能够支持150Mbps上行和150Mbps下行网络。


虽然问题似乎表明他们正在使用点对点架构,但是此答案的第一句话陈述不准确。大多数部署的WebRTC系统在会议中使用一个或多个中央服务器扮演选择性转发角色,因此"WebRTC需要每个参与者之间的点对点连接"并不准确。 - jbg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接