转折点——WebRTC SFU负载测试(一)

如果您想用WebRTC群聊,那您要用到的是选择性转发单元(SFU)。但是SFU的容量规划很难进行,因为我们需要估计它们的放置位置、带宽消耗以及所需服务器。

为了帮助网络架构师和WebRTC工程师完成此规划,webrtcHacks的撰稿人Alex Gouaillard博士和他CoSMo Software的团队把一个负载测试套件组合在一起来测量负载与视频质量。之后他们发布了所有主要开源WebRTC SFU的结果。该套件基于Google资助的Karoshi互操作性测试引擎(KITE),并在webrtc.org上用于显示互操作性状态。 CoSMo团队还开发了基于机器学习的视频质量评估框架,该框架优化了实时通信场景

首先,提醒大家一点:问哪种SFU最好,就像问哪种汽车最好。如果您只关注最高时速,那一级方程式赛车是首选,但开它送孩子上学就不太合适了。汽车销售商对这类测试嗤之以鼻。因为这种测试把汽车的诸多功能归结为仅仅几个性能指标。而这些指标可能并不是车的主要设计标准。很多时候它们不是很重要。特别是WebRTC SFU,如果您仅仅因为可以在SFU上加载很多流而选择他,弹性、用户行为以及成本优化等原因可能使您望而却步。负载测试也没有深入研究端到端的用户体验、易于开发或者一个成功服务必需的所有其他功能。这样的报告仅代表现在的研究结果。但是这些系统一直在改进,因此之后的研究结果可能会更好。

话虽这么说,但在我构建成本模型时觉得此类数据很有帮助。Alex和他的团队深入研究了这个领域,这是WebRTC开源生态系统成熟的好兆头。我亲自联系了这里提到的每个SFU开发团队,确保他们的信息公平公开。这个测试设置当然不是完美的。但是我认为它将为我们的社区提供有用的参考。

请继续阅读以了解Alex的测试设置和分析摘要。

https://www.flickr.com/photos/simply-put/396845694

简介

describe-webrtc邮件列表上经常出现的一个问题是“哪一家是最好的SFU”。很多SFU供应商和团队会说“当然是我们的最好!”。然而,最好的只有一个。

您可以点击此处检查完整线程。查德·哈特(Chad Hart)在接受Dialogic采访时给出了回答。他意识到了这个问题,并表示:

“无论如何,我认为我们需要一个针对多个可扩展性指标的全局(适用于所有对象)、可重现且无偏见(即可用的源代码,每个供应商都可以根据需要调整其安装)的基准。”

三年后,我和我的团队建立了这样的基准系统。下面我会解释该系统的工作原理,并展示我们的一些初步结果。

困难

一些SFU供应商提供负载测试工具。贾努斯(Janus)提供了杰塔克(Jattack)测试工具。 Jitsi提供了jitsi-hammer,而且公布了一些测试结果。特别是Jitsi,透明度做得很好。而且Jitsi提供了可靠的数据和足够的信息来再现结果。但是并非所有供应商都拥有这些工具,而且很少有供应商将其完全开源。此外,每种工具的设计目的都是针对供应商各自环境的,所以问题类型也稍有不同。例如:

  • 选定类型和给定带宽限制的单个服务器实例可以处理多少个流?
  • 同一实例上可以支持多少个用户?
  • 一次会议可以支持多少个用户同时在线?

我们只是没有找到一种既可以独立再现且无偏见的方法去进行真正的比较研究。工具内在的一些没有解决的问题也滋生了不道德的行为。有些人意识到他们可以逃脱用户的索赔,因为没有人可以对他们进行实际监管。所以我们致力于对此有所交代。不必让人无条件信服,但至少可供同行参考。

用例

要想让我们回答“哪一家是最好的SFU?”,您需要说明您SFU的用途。

我们选择研究引起最多关注的两个用例(至少是describe-webrtc上关注度最高的用例):

  1. 视频会议——多对多,一次发言对应一位与会者(理想情况下);
  2. 媒体流——一对多,单向。

大多数视频会议问题都集中在单个服务器实例上。能容纳20多人的会议对于大多数用户来说就足够了。一份研究表明:在多数会议中,呼叫为1-1的情况占大多数。平均呼叫次数约为3.。这种配置非常适合任何公共云供应商中的单个小型实例(只要您有1Gbps NIC)。由于呼叫者与回应者的互动频率不高,所以我们可以使用非常简单的负载平衡和水平可伸缩性技术。而且媒体流既包含单一来源的流,也有成千上万观众的流。这就需要使用多服务器的层次结构。

我们努力试用不同的测试方案,在多个WebRTC服务器之间以相同的方式实现它们,以便能保证唯一的区别是要测试的系统,以及我们的结果不会有偏差。

本文里我将重点介绍视频会议方案。我们目前在完善媒体流测试结果的最终阶段,并计划在11月14日的Streaming Media West上展示结果。

测试套件

我们与Google和其他公司合作开发了KITE。这是一种测试引擎,可以使我们轻松支持各种客户端(浏览器、手机和电脑)。如webrtc.org所示,KITE用于日常跨浏览器测试WebRTC的实施。

→  相关阅读:WebRTC 通话质量调优必备:三个弱网模拟测试工具

文章地址:https://webrtchacks.com/sfu-load-testing/

原文作者:Alex Gouaillard

 

 

 

填写常用邮箱,接收社区更新

WebRTC 中文社区由

运营