2

优酷弱网平台落地实践

 2 years ago
source link: https://my.oschina.net/alimobile/blog/5378456
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

优酷弱网平台落地实践 - 阿里巴巴移动技术 - OSCHINA - 中文开源技术交流社区

作者:孙长浩(火炏)

弱网环境下的质量保障一直是公认的难题,实际生活中每个人都会遇到弱网环境,比如用户在景区地铁里,高铁上,电梯中,景区周边等场景使用APP大概率都会遇到弱网场景。优酷作为视频内容APP,对网络的要求特征为持续时间长,带宽平稳等,所以对弱网环境尤其敏感。在弱网环境下,用户会遇到诸如卡顿、停止播放等体验问题。我们通过分析埋点数据可以清晰的看到目前线上的错误码中,网络(弱网)相关的错误码类型占比已经超过一半以上。因此,为了提高版本上线质量,有效的模拟线上网络环境,弱网环境下的测试是不可或缺的线下测试组成部分。

基于此,优酷弱网平台从业务的实际痛点出发,针对弱网进行标准化的分级定义,对场景进行精确测量,对线上回溯数据进行精准回放,并对线下/线上弱网模型匹配训练。通过平台化的方式,提供统一的使用和接入方法,不断积累和沉淀更明确的衡量指标以及合理性的标准判断,给测试和开发人员提供更有效的弱网仿真模型。本文就将结合业务场景,展开聊聊优酷弱网测试平台的控制原理、技术实现以及具体业务的使用情况。

弱网认知及原理

弱网没有严格的指标进行定义,实际可以理解为用户在实际使用个人业务时因信号波动、网络拥堵等原因造成的业务使用体感差,从而进行的一种体感性描述。

根据用户的实际场景,造成弱网的原因一般有两种:

  1. 物理硬件导致:比如离路由器过远,信号强度低,也有周边干扰大,导致误码率高等情况均会导致用户弱网;
  2. IP网络传输性能弱:比如网络节点性能过载,运营商网络限制,跨网传输等等。

可参考下图进行理解

通过上图两种场景可以看到整体网络构造比较复杂,存在模拟难、无法量化的问题,无法制定统一标准。因此,我们尝试通过其他方式来进行量化。通过参考 RFC2544 文档,我们得知衡量网络性能好坏的方法可以通过吞吐量、丢包率、延时、背靠背四个维度进行衡量,定义标准。因背靠背主要测试转发能力,因此大多数采用前三项进行衡量。

弱网控制原理

由下图TCP/IP协议传输过程,弱网控制主要有两种场景:硬件控制和软件控制。

一、硬件控制

主要是通过信号衰减器和噪声发生器进行控制,通过进行信号的衰减以及噪声的大小控制网络中误码率的增高,从而影响应用层接收信号的延时,带宽和误码,目前做wifi性能测试项目主要是使用这个方法,但此种方式目前仅可以定性控制,做不到定量的控制。

二、软件控制

目前主流只通过Linux操作系统中的流量控制器TC(Traffic Control)用于Linux内核的流量控制,主要是通过在输出端口处建立一个队列来实现流量控制。

接收包从输入接口进来后,经过流量限制丢弃不符合规定的数据包,由输入多路分配器进行判断选择:如果接收包的目的主机是本主机,那么将该包送给上层处理,否则需要进行转发,将接收包交到转发块(Forwarding Block)处理。转发块同时也接收本主机上层(TCP、UDP等)产生的包,通过查看路由表,决定所处理包的下一跳。然后,对包进行排列以便将它们送到输出接口。一般只能限制网卡发送的数据包,不能限制网卡接收的数据包,所以可以通过改变发送次序靠控制传输速率。Linux流量控制主要是在输出接口排列时进行处理和实现,如下图所示:

目前大部分路由器以及树莓派都是使用这个方式。另有一些第三方设备厂商提供的设备,大多也是基于此种模式做的,只是在上层进行了更多的一些封装。此种方式可以做到定量的控制,而做不到定性的控制,因此优酷弱网平台从用户实际场景出发,分别支持量化的软件控制和定性的硬件弱网控制。

优酷弱网平台技术实现

平台网络拓扑

为了可以让每个用户很方便的使用弱网平台,经多次评估及讨论最终采用网络代理的方式,进行网络流量的拦截和控制,这样的好处是有较强的通用性,无论是Android 还是iOS以及windows系统均自带网络代理功能,因此用户侧直接在各端设置网络代理并免安装应用即可直接使用,具体的网络拓扑图如下:

平台分层功能架构图

优酷弱网平台开发采取分层实现模式,总体分三层:

  • 底层物理层采用真机及屏蔽箱模式,可以直接对屏蔽箱的真机进行弱网信号控制;
  • WIFI弱网控制层,通过TC服务器的方式进行控制;
  • 用户前端页面提供设备及场景管理,状态展示等功能。

平台功能及业务应用

平台可支持弱网测试范围

从app的角度看,弱网测试的范围是非常广的,同时对于app的优化也非常重要,下图是对弱网常用的测试项的一些功能梳理,目前平台针对这些弱网的测试都是可以支持的。

弱网分级标准化定义

大多数开发者对于弱网定义仅限于差、好、坏等这样的方式来进行描述,这样的描述仅仅是一种定性方式,鉴于很多开发解决问题,也仅仅分析到此,一句网络问题,后面问题就不了了之,优酷弱网平台通过对于弱网参数的分级量化定义,很轻松的就能进行一些性能对比,让开发有针对性优化。

分级量化弱网如下图:

下图是不同分级的量化弱网数据的对比,很容易就能找到产品的差异点:

通过上图,可只低网速场景和高丢包场景,优酷app还有可以提供产品体验优化的地方。

优酷弱网体验持续优化

优酷业务主要是音视频播放,对网络稳定性的要求非常高,因此在弱网优化这一块,也积累的一些经验,主要从网络数据采集出发,针对用户实际的网络状况进行采集。在弱网策略层,对采集到的网络数据进行弱网状态的进入及退出进行策略判断,当用户进行弱网状态时,通过线下数据的策略匹配,对线上用户实际的场景进行匹配,最终达到网路优化的效果,具体可参考如下图:

一、用户弱网场景定义

优酷弱网场景:用户在看优酷视频时,在什么样的时间和地方遇到了导致用户播放出现加载时间过长或者无法起播的问题,该场景有规律性和确定性。

基于上述优酷弱网场景,我们进行弱网的一些特性测量,并基于测量数据,我们在实验室进行用户真实的场景模拟,下图是对用户场景的一部分实测模拟。

下图是对用户场景的波形回放及实际测试效果:

二、弱网持续优化过程

通过在弱网实验室进行重现用户是播放loading或者无法起播现象,比如同样检测到用户在地铁会播放会loading。可以根据用户的场景检测,进行地铁前提前大buffer缓存,或者提前提示用户缓存等各种方式,一旦用户有弱网场景会进行策略命中及优化,主要流程图如下:

通过用户在弱网具体场景的优化和策略匹配,用户在弱网场景播放上的体验有了持续提高。

4G信号和WIFI信号,不同的信号源有天然的区别,因此在4G网络情况下进行弱网测试,所需要的环境更为复杂,需要专门的屏蔽室,所需要的成本更高,优酷弱网平台采用屏蔽柜+真机平台+衰减器方式提供真实的弱网场景,用户在真机平台上可以一键用户真实的进行弱网模拟。

下图为:支持信号衰减的屏蔽柜

下图为:信号衰减场景

下图为:在不同信号衰减情况下,下载速率的一些关系图:

全国网络的单点接入能力

在我们实际业务中,由于运营商网络,CDN拥堵等各种原因,常常发生单点的网络问题,优酷弱网平台通过直接代理到全国各地市的方式,可以快速定位单点问题,并高效解决。

各弱网方案对比

总结及展望

优酷弱网仿真平台,通过代理的方式、平台化的服务,极大突破弱网测试所需的环境限制,目前已做到了弱网随时可测,然而5G网络、IPV6网络、IOT设备的大量部署,我们面临的网络环境更加复杂,同时网络拓扑也越来越复杂,如何能在实验室对这些网络的仿真依旧是一个难题。另外线上网络的问题,如何进行自动化的定位和恢复也是一个需要持续研究的内容,弱网平台以后将在这些方向进行发力。希望未来更多的对网络有兴趣的同学,一起成长为网络方面的专家。

关注【阿里巴巴移动技术】微信公众号,每周 3 篇移动技术实践&干货给你思考!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK