首页 / 久久精品 / WebRTC 通话质量调优必备:三个弱网模拟测试工具

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

作为一个使用 WebRTC 独立开发者或团队,怎样才能知道自己 App 的通话质量已经“达标”了呢?如何进行合理的弱网模拟测试?我们让声网 Agora 音视频实验室团队分享了三个开源工具的部署、使用方法,及其各自优缺点。希望可以帮到大家。

如果你是长期关注WebRTC的资深开发者或者技术发烧友,你可能注意到最近圈子里有一个不大不小的话题,吸引了一些知名的WebRTC技术博主发表自己的看法。

事情是这样的。

不久前,Jitsi在其官方博客上发布了WebRTC和Zoom Web客户端的视频通话对比测试[1]。测试结果表明,WebRTC的视频通话质量优于Zoom。一石激起千层浪,很多博主都发表了自己的看法。

WebRTC 通话质量调优必备:三个弱网模拟测试工具插图RTC vs . zoom-by Jitshihttps://www . zhi Hu . com/video/1046419072383754240似乎在挑刺,但jitsi这么做是有原因的。

Jitsi是一个开源项目,可以帮助开发者在Web、Windows、Linux、Mac OS X和Android平台上实现实时语音和视频通话应用。许多独立开发人员正在基于此代码开发自己的视频通话应用程序。所有这些都是基于WebRTC的。但Jitsi看到,Zoom作为视频会议服务提供商,不仅多次声称自2015年以来在部分地方没有使用过WebRTC,还多次表示“WebRTC是能力非常有限的解决方案”:

WebRTC 通话质量调优必备:三个弱网模拟测试工具插图1Jitsi如何测试WebRTC弱网络传输?在同一个Wi-Fi环境下,他们用同一个Mac做了两个测试,使用WebRTC和Zoom进行一对一的视频通话。在两组通话的前10秒,只进行正常通话。10秒后网络损耗增加,上下行带宽限制在500kbps。此时,测量两种方案各自调整需要多长时间,使正在进行的视频通话能够稳定适应当前网络带宽的变化。如下图所示,博主Tsahi Levent-Levi在他的博文[2]中使用了一个比较图像来描述测试期间的比特率变化。

WebRTC 通话质量调优必备:三个弱网模拟测试工具插图2结果,在带宽被人为限制后,WebRTC用了20秒的时间才完全将视频通话调整到合适的比特率,而Zoom用了156秒。

相比于这种比较,我们更关心的是这种方法对于WebRTC开发者有多大的借鉴意义。参照这种方法,WebRTC开发人员能否准确测试出自己的应用程序和别人的应用程序之间的差距?

答案是否定的,这个方法不严谨。

根据音网的经验,上下行同时限制相同的带宽阈值,并不是常见的质量测试方法。通常,上行链路被限制在一个方向,或者下行链路被限制。但从测试本身来看,这是公平的。相信Jitsi不会专门针对这个场景调试后给出这样的对比结果。应该是Zoom在这个场景中有弱点。

从通信架构来看,Zoom采用MCU/SFU服务器接入通信方式,采用分段带宽自适应策略。Jitsi的一对一沟通被认为遵循了WebRTC的端到端反馈。因此,两者是不同的。全链路反馈在这种场景下有一定的优势,链路上的瓶颈可以快速反映给发送方,使其快速适应。分别估计上行和下行带宽的分段策略依赖于服务器的交付决策机制,策略配置是QoE的难点。

Tsahi Levent-Levi也在博客中表示,人工工具干扰网络传播的方式不足以完全再现真实的用户场景。但是我们可以使用工具尽可能接近用户的真实场景。

真实用户场景和弱网络环境

真实的用户场景是什么?当一个人晚上在家通过Wi-Fi上网时,网络电影播放流畅,但一旦他在晚上上网高峰期进行视频通话,画面就会被烧毁,不仅可能会限制带宽,还会导致很高的丢包率。

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

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

Jitsi所做的就是模拟弱网络环境的测试。通常,该测试通过修改带宽、数据包丢失和抖动参数来模拟。从数据来看,不同的应用对弱网络的定义不同,要综合考虑每种网络类型的最低速率和服务场景。以移动场景为例。一般低速的2G、3G和信号弱的Wi-Fi被认为是弱网,需要纳入弱网测试场景。

弱网模拟试验的正确姿势

其实这个事件也揭示了一个很普遍的问题。很多刚接触WebRTC的独立开发者可能不知道如何模拟弱网络场景。模拟弱网络测试有软件工具和硬件工具,但硬件工具价格昂贵,不适合独立开发人员或普通团队。所以,我们来分享一下音网Agora音视频实验室的一些经验,推荐三个普通WebRTC开发者可以使用的弱网络环境模拟测试工具

让我们详细谈谈如何构建和使用每个工具,并比较它们的优缺点:

Linux流量控制

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 系统下需要 iproute2Fedora/RHEL 系统下需要 iproute-tciptablesLinux kernel module : sch_netem

同时,dhcp服务器需要安装在软件中。具体安装方法请参考Ubuntu官方文档[3]。

开始部署

NIC-0 通过网线连接外网, 假设对应 Net device eth0NIC-1 通过网线连接路由器 WAN 口, 假设对应 Net device eth1路由器: 打开桥接模式, 关闭 DHCP 服务

电脑输入命令行:

vi /etc/default/isc-dhcp-server

添加:

INTERFACESv4=”eth1″

重新启动服务:

sudo /etc/init.d/isc-dhcp-server restart

重新启动后运行以下命令:

echo “1” > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE
modprobe ifb
ip link set ifb0 up

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

如何使用TC

弱网络测试基本上遵循以下四个步骤:

设备连接 Wi-Fi 热点成功获取 IP 地址,假设为:192.168.3.101。打开 Linux terminal,输入 TC 命令为发送端 IP 为 192.168.3.101 的设备添加网损。此时手机即在弱网环境下运行。测试完成后,输入 TC 命令取消弱网。

例如,如果您想将IP地址为192.168.3.101的设备的上行数据包丢失限制5%,则需要运行以下命令:

sudo tc qdisc add dev ifb0 root handle 1: prio bands 3
sudo tc qdisc add dev eth1 ingress
sudo tc filter add dev eth1 parent ffff: protocol ip u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ifb0
sudo tc qdisc add dev ifb0 parent 1:3 handle 30: netem loss 5 limit 1000
sudo tc filter add dev ifb0 protocol ip parent 1:0 prio 3 u32 match ip src 192.168.3.101 flowid 1:3

如果您想将IP地址为192.168.3.101的设备的下行数据包丢失限制20%,您需要运行以下命令:

sudo tc qdisc add dev eth1 root handle 1: prio bands 3
sudo tc qdisc add dev eth1 parent 1:3 handle 30: netem loss 20 limit 1000
sudo tc filter add dev eth1 protocol ip parent 1:0 prio 3 u32 match ip dst 192.168.3.101 flowid 1:3

可以说,TC框架可以实现很多场景,但前提是开发者要学会使用TC命令行。如果你想了解更多关于TC命令的知识,可以学习官方文件[4]。

增强交通控制

ATC实际上是脸书在2015年开放的一套在线测试工具。ATC是一个基于TC的包。

空管弱网控制器部署后,可以通过手机上的Web界面随时切换不同的网络环境。多个手机可以连接同一个Wi-Fi,复用同一个弱网络控制器,多个设备之间模拟的网络环境互不影响。也就是说,这个测试工具部署好之后,团队中的任何人都可以通过Web自行进行测试,不受干扰。

ATC的部署方式比较复杂,但只要是基于官方文件[5]就可以成功搭建。按照官方文件完成构造后,需要通过下面几行命令配置HOST地址,然后就可以开始运行了。

打开设置:

vi atcui/atcui/settings

添加HOST地址:

ALLOWED_HOSTS = [‘*’]

开始命令:

atcd –atcd-wan eth0 –atcd-lan eth1

施用方式

设备接入对应 Wi-Fi打开 http://192.168.3.1:8000 (假设 eth1 IP地址为:192.168.3.1)输入对应弱网参数后,点击按钮 [Update Shaping] 生效,该弱网仅对本机生效WebRTC 通话质量调优必备:三个弱网模拟测试工具插图3测试完成后,单击[关闭]按钮清除弱网络设置。

WebRTC 通话质量调优必备:三个弱网模拟测试工具插图4网络链路调节器

可能一些iOS开发者已经认识到了。NLC是苹果提供的官方网络模拟工具,可以安装在macOS和iOS上。

MacOS安装

打开 Xcode,选择 Xcode -> Open Developer Tool -> More Develop Tools。WebRTC 通话质量调优必备:三个弱网模拟测试工具插图5用苹果账号登录网站,搜索 Additional Tools for Xcode,下载 Xcode 对应版本的 Additional Tools。WebRTC 通话质量调优必备:三个弱网模拟测试工具插图6打开下载的文件,在 Hardware 文件夹中双击 Network Link Conditioner 安装。 安装完成后,工具会在系统设置中的最后一排出现。WebRTC 通话质量调优必备:三个弱网模拟测试工具插图7

iOS 端安装用苹果账号登录网站,搜索Xcode的附加工具,下载Xcode对应的附加工具版本。IOS端安装

您可以通过打开开发人员选项来使用网络链接调节器功能。

数据线连接手机到 Mac 上,Xcode -> Windows -> Devices -> 选中当前手机设备,右键弹出WebRTC 通话质量调优必备:三个弱网模拟测试工具插图8菜单 -> 选择Show Provisioning Profiles… 会弹出一个证书列表窗口 WebRTC 通话质量调优必备:三个弱网模拟测试工具插图9

如果手机已经安装了必要的开发者证书,直接点击窗口中的 done 按钮即可。否则需要点击左下角的 + 号,把从网上下载下来的证书导入进去, 点击 done 按钮关闭窗口。菜单->选择显示设置配置文件…将弹出一个证书列表窗口。如果手机已经安装了必要的开发者证书,只需点击窗口中的完成按钮。否则,单击左下角的+号导入从互联网下载的证书,然后单击完成按钮关闭窗口。

此时,在电话设置中还有一个开发者选项,当您输入开发者选项时,您可以看到网络链接调节器选项。

施用方式

NLC的使用要简单得多,不需要使用命令行。如果NLC中的配置不符合要求,可以手动添加更多配置。在Mac和iOS上,只需遵循以下步骤。

Mac端

WebRTC 通话质量调优必备:三个弱网模拟测试工具插图10WebRTC 通话质量调优必备:三个弱网模拟测试工具插图11

iOS 端IOS端

WebRTC 通话质量调优必备:三个弱网模拟测试工具插图12WebRTC 通话质量调优必备:三个弱网模拟测试工具插图13

需要注意的是 interface 设置,当 iOS 通过共享 Wi-Fi 热点的方式作为接入设备的弱网控制机时,需要将 interface 设置为 Cellular。应注意界面设置。当iOS通过共享Wi-Fi热点用作接入设备的弱网络控制器时,接口应设置为蜂窝。

比较和总结

WebRTC 通话质量调优必备:三个弱网模拟测试工具插图14相比之下,TC的参数最丰富,可以控制更多的细节,可以模拟各种不同的网络情况。但是操作太复杂,需要开发人员熟悉TC命令和网络模型。NLC最简单,最容易操作,参数配置可以满足常见的开发需求。

WebRTC 1.0的重点是为开发人员提供对媒体和数据通道的更多控制。根据之前的提议[6],WebRTC的下一个版本可能会将数据处理与主线程分开。使用RTCDataChannels传输数据将比使用WebSocket有更好的拥塞控制。

根据WebRTCHacks博主Philipp Hancke [7]的分析,Zoom的Web客户端不使用WebRTC,客户端使用WebSocket进行媒体传输,类似于WebRTC中的Turn/TCP。虽然有利于穿越防火墙,但在实时通信中,如果出现丢包,就会重传,最终导致累积时延。仅从这一点来看,下一版WebRTC的方案比Zoom更好。

如上所述,开发WebRTC服务器的策略配置是QoE的难点。因此,多人沟通质量差是原生WebRTC应用最常被诟病的问题。其实音网的Agora Web SDK也是基于WebRTC开发的,并基于原生WebRTC进行了多方面的优化。声音网络Agora Web SDK一直专注于通信质量的提升,优化到当前版本,已经能够支持17人视频通话。我们对WebRTC网关进行了多方面的优化,比如传输质量保证、原生WebRTC的QoS优化,以及针对不同场景的不同优化策略。

我们提供全球化服务,覆盖多种实时音视频通信场景,包括视频会议、在线医疗、在线教育、社交直播、社交游戏音视频、金融、IoT等。目前,Agora Web SDK是全球商业服务中最大的基于WebRTC的实时通信SDK。很多情况下,WebRTC不会被认为是大渠道解决方案。Agora Web SDK现在支持数百万个并发的大通道调用。

参考资源

[1]网络RTC与Zoom–简单的jitsi.org/news/a-simple-congestion-test-for-zoom/拥堵测试

[2] WebRTC vs Zoom。谁的视频质量更好?bloggeek.me/webrtc-vs-zoom-video-quality/

[3] Ubuntu官方文档:DHCP服务器help.ubuntu.com/community/isc-dhcp-server

[4]使用TC命令的http://tldp.org/HOWTO/Traffic-Control-HOWTO/index.html

[5]增强流量控制:模拟网络条件的工具

[6] WebRTC NV提案https://www . w3 . org/2011/04/WebRTC/wiki/images/5/5c/WebRTCWG-2018-06-19 . pdf

Zoom的网络客户端如何避免使用WebRTC webrtchacks.com/zoom-avoids-using-webrtc/

本文来自网络,不代表吉安南娱网络传媒立场,转载请注明出处:http://www.inanyu.com/qyl/11339/

青娱乐作者

上一篇
下一篇

为您推荐

返回顶部