9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

WebRTC vs. Zoom 之外:WebRTC 的弱网模拟测试(一)

  • 2019-11-30
  • 本文字数:2335 字

    阅读完需:约 8 分钟

WebRTC vs. Zoom 之外:WebRTC 的弱网模拟测试(一)

作为一个使用 WebRTC 独立开发者或团队,怎样才能知道自己 App 的通话质量已经“达标”了呢?如何进行合理的弱网模拟测试?介绍给开发者们三个开源工具的部署、使用方法,及其各自优缺点。


如果你是长期关注 WebRTC 的资深开发者或技术爱好者,你可能留意到了,近期圈子里出了一个不大不小的话题,引得一些知名 WebRTC 技术博主纷纷发声,表明观点。


事情是这样的。


前不久,Jitsi 在其官方博客[1]上发布了一个 WebRTC 与 Zoom Web 客户端的视频通话对比测试。测试结果显示,WebRTC 的视频通话质量比 Zoom 还要好。一石激起千层浪,不少博主发表了自己的看法。


看似是在挑事,但 Jitsi 出此一举完全事出有因。


Jitsi 是一个开源项目,可帮开发者在 Web 、Windows、Linux、Mac OS X、Android 平台上实现实时的语音、视频通话应用。有很多独立开发者在基于这套代码开发自己的视频通话应用。这一切,都是建立于 WebRTC 的基础之上实现的。然而, Jitsi 却看到作为视频会议服务提供商的 Zoom 不但从 2015 年开始就在一些地方一再声称自己并没有使用 WebRTC,甚至不断表示“WebRTC 是一种能力非常有限的解决方案”:



图:源自 Jitsi 官方博客

Jitsi 如何测试 WebRTC 弱网传输呢?

他们在同一个 Wi-Fi 环境下,用同样的一台 Mac ,做了两次测试,分别用 WebRTC 和 Zoom 进行一对一视频通话。在两组通话的最初 10 秒,只是进行正常通话,在 10 秒之后,开始增加网损,同时限制上行与下行带宽至 500kbps。这时测量两个方案各自需要多长时间来调整,使正在进行的视频通话稳定适应目前网络带宽的变化。如下图所示,博主 Tsahi Levent-Levi 在其博文[2]中,用一张比较形象图描绘了测试过程中的码率变化。



图片源自 Tsahi Levent-Levi 的博客


结果是在带宽受到人为限制后,WebRTC 的视频通话用了 20 秒完全调整到了合适的码率,而 Zoom 则用了 156 秒。


相对于与这个对比结果,我们更关心的是,这个方法对 WebRTC 开发者有多大参考意义呢?WebRTC 开发者参照这个方法,是否能准确地测试出自己与他人应用之间的差距呢?


答案是“否”,这个方法并不严谨。


以声网的经验来讲,上下行同时限制相同带宽门限的测试,并非常用的质量测试方式。通常会单向限制上行,或者限制下行。但是从测试本身来说,是公平的。相信 Jitsi 并不会专门针对这个场景进行调试后给出这样的对比结果,应该是 Zoom 在这个场景下有弱点被抓住了。


从通信架构角度来看,Zoom 采用的是 MCU/SFU 的服务器接入通信方式,使用分段式的带宽自适应策略。而 Jitsi 的 1 对 1 通信,相信是沿用了 WebRTC 的端到端反馈。所以,两者是不同的。全链路反馈在这个场景中有一定优势,链路上的瓶颈可以快速反应到发送端,从而快速自适应。而分段式策略,就要分别估算上行和下行带宽,依赖于服务器的投递决策机制,策略配置是一个 QoE 的难点。


Tsahi Levent-Levi 也在博客中表示,通过人为工具干预网络传输的方式并不够完全复现真实的用户场景。但我们可以通过工具来尽可能的接近用户的真实场景。

真实用户场景与弱网环境

什么是真实的用户场景呢?一个人晚上在家通过 Wi-Fi 上网,在线电影播放基本流畅,可一旦在晚间用网高峰期打视频电话就画面糊,这时不仅可能带宽受限了,还可能有较高的丢包率。


与有线网络通信相比,无线网络通信受环境影响会更大,比如高层建筑、用户的移动、环境噪音、封闭的环境等,网络服务质量相对不稳定,导致用户经常在弱网环境下通信。例如,在车库的视频通话通常都不如在室外的质量。


除了受环境影响外,网络覆盖、过载控制、邻区漏配等,也会造成呼叫失败、服务质量下降。这些真实的用户场景。


Jitsi 所做的就是模拟弱网环境的测试。一般这种测试是靠修改带宽、丢包、抖动参数来进行模拟。从数据角度讲,不同的应用对弱网的定义是不同的,要对各网络类型最低速率、业务场景做综合考虑。以移动场景为例,一般 2G,速率较低的 3G,弱信号的 Wi-Fi 都算是弱网,需要被纳入到弱网测试场景中。

弱网模拟测试的正确姿势

其实,这次事件也揭示了一个很普遍存在问题,很多刚接触 WebRTC 的独立开发者,可能并不了解如何模拟弱网场景。我们来分享一些声网 Agora 音视频实验室的经验,推荐 3 个 WebRTC 开发者们都可以使用的弱网环境模拟测试工具。


下面详细说一下每个工具的搭建、使用方法,以及三者之间优缺点对比:

Linux Traffic Control(TC)

Linux 内核内置了一个 Traffic Control 框架,能够实现流量限速、流量整形、策略应用,可以注入延时故障、丢包故障、包重复故障、乱序故障,以及模拟网络闪断等情况。TC 对硬件、系统还有一些要求:


硬件要求


  • PC - 建议配置不低于 CPU i3,4G 内存,64G 硬盘

  • 双网卡 - 除原有板载网卡外, 额外需要一块 pci-e 网卡(例如 intel 82574L)

  • 路由器 - 支持桥接模式

  • 网线 - 若干


系统要求


  • 需要 Fedora、OpenSuse、Gentoo、Debian、Mandriva 或 Ubuntu,如果 Linux 内核版本大于 2.6,则已内置 TC。

  • 系统模块

  • Ubuntu/Debian 系统下需要 iproute2

  • Fedora/RHEL 系统下需要 iproute-tc

  • iptables

  • Linux kernel module : sch_netem


同时,软件方面还需要安装 dhcp server。具体安装方法,请参考 Ubuntu 官方文档[3]。


开始部署


  • NIC-0 通过网线连接外网, 假设对应 Net device eth0

  • NIC-1 通过网线连接路由器 WAN 口, 假设对应 Net device eth1

  • 路由器: 打开桥接模式, 关闭 DHCP 服务


PC 端输入命令行:


1vi /etc/default/isc-dhcp-server
复制代码


添加:


1INTERFACESv4="eth1"
复制代码


重启服务:


1sudo /etc/init.d/isc-dhcp-server restart
复制代码


重启后运行以下命令:


1echo "1" > /proc/sys/net/ipv4/ip_forward2iptables -F3iptables -P INPUT ACCEPT4iptables -P FORWARD ACCEPT5iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE6modprobe ifb7ip link set ifb0 up
复制代码


至此,你已经完成了部署。


活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2019-11-30 22:311354

评论

发布
暂无评论
发现更多内容

“程”风破浪的开发者 | web3.0爆红是炒作还是真有赚头?

三掌柜

Web3.0 10月月更 “程”风破浪的开发者

企业如何建立数据分类分级制度

极盾科技

数据安全 数据分类分级

Spring之依赖注入

Andy

Spring Boot「17」数据库连接池

Samson

Java spring 学习笔记 spring-boot 10月月更

云原生机甲,真正的服务网格

如水

云原生 servicemesh 云原生机甲 CloudMecha

拒绝“内鬼式”数据泄露,安全内控如何构建?

极盾科技

华为云连接CC,助力企业一站式解决跨区域传输难问题

科技怪授

华为云CC链接

Apache IoTDB v0.13.3 发布!

Apache IoTDB

数据库 Apache IoTDB

Spring之资源读取

Andy

Spring之控制反转

Andy

宝藏级别,GitHub上的SpringBoot核心笔记,讲得太清晰了

程序知音

【web 开发基础】PHP 的流程控制之多向条件分支结构(switch) -PHP 快速入门 (16)

迷彩

switch case switch语句 10月月更 PHP基础 分支结构

政企办公新入口,华为云桌面安全便捷更高效!

爱科技的水月

一个疯子居然获得北京市科学技术奖?

青藤云安全

青藤云安全 北京科学技术奖

万物皆可集成系列:低代码对接阿里物流API实现快递跟踪

葡萄城技术团队

前端 低代码 电商 API

Spring之定时调度

Andy

企业办公转型的出路在哪里?华为云桌面开创办公新形式

爱科技的水月

整个汽车产业链,都能“挤上”这朵云?

脑极体

Go语言入门08—函数

良猿

Go golang 后端 10月月更

跨区域传输数据不够流畅?华为云连接CC了解一下

科技怪授

华为云链接

华为云桌面,随时随地助力企业轻松办公

科技怪授

华为云桌面

华为云桌面,如何为企业构建新型工作方式

爱科技的水月

华为云弹性云服务器助力打造更安全可靠、灵活高效的云空间

爱尚科技

官宣:新功能正式上线!

青藤云安全

主机安全 青藤云安全 青藤智库

Apache Kyuubi 在B站大数据场景下的应用实践

网易数帆

hive Kyuubi spark SQL 企业号十月 PK 榜

数组元素积的符号

掘金安东尼

算法 10月月更

聚焦云计算、大数据、人工智能等开源技术,这场开源开发者的盛会不容错过!

开源社

#开源 COSCon'22 2022 第七届中国开源年会

低代码在企业数字化转型中有什么价值?

SoFlu软件机器人

重磅 | 青藤蜂巢入围领导者象限,增长指数&综合竞争力第一!

青藤云安全

主机安全 青藤云安全

云上作业就是这么轻松,华为云桌面的工作新体验

爱科技的水月

公共 IP 地址和私有 IP 地址有什么区别?

wljslmz

IP地址 网络技术 10月月更 公网ip 私网ip

  • 扫码添加小助手
    领取最新资料包
WebRTC vs. Zoom 之外:WebRTC 的弱网模拟测试(一)_文化 & 方法_声网_InfoQ精选文章