优酷弱网平台落地实践
作者:孙长浩(火炏)
弱网环境下的质量保障一直是公认的难题,实际生活中每个人都会遇到弱网环境,比如用户在景区地铁里,高铁上,电梯中,景区周边等场景使用APP大概率都会遇到弱网场景。优酷作为视频内容APP,对网络的要求特征为持续时间长,带宽平稳等,所以对弱网环境尤其敏感。在弱网环境下,用户会遇到诸如卡顿、停止播放等体验问题。我们通过分析埋点数据可以清晰的看到目前线上的错误码中,网络(弱网)相关的错误码类型占比已经超过一半以上。因此,为了提高版本上线质量,有效的模拟线上网络环境,弱网环境下的测试是不可或缺的线下测试组成部分。
基于此,优酷弱网平台从业务的实际痛点出发,针对弱网进行标准化的分级定义,对场景进行精确测量,对线上回溯数据进行精准回放,并对线下/线上弱网模型匹配训练。通过平台化的方式,提供统一的使用和接入方法,不断积累和沉淀更明确的衡量指标以及合理性的标准判断,给测试和开发人员提供更有效的弱网仿真模型。本文就将结合业务场景,展开聊聊优酷弱网测试平台的控制原理、技术实现以及具体业务的使用情况。
弱网认知及原理
弱网认知
弱网没有严格的指标进行定义,实际可以理解为用户在实际使用个人业务时因信号波动、网络拥堵等原因造成的业务使用体感差,从而进行的一种体感性描述。
根据用户的实际场景,造成弱网的原因一般有两种:
- 物理硬件导致:比如离路由器过远,信号强度低,也有周边干扰大,导致误码率高等情况均会导致用户弱网;
- 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 篇移动技术实践&干货给你思考!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
从350ms到80ms,打造新零售场景下 iOS 短视频的极致丝滑体验
作者:李凯(神捕) 本文为盒马 APP 短视频优化方案 iOS 篇,Android 短视频秒播优化方案,可见右侧链接内容 :拒绝卡顿,揭秘盒马鲜生 APP Android 短视频秒播优化方案 “ 内容作为 App 产品新的促活点,受到了越来越多的重视与投入,短视频则是增加用户粘性、增加用户停留时长的一把利器。短视频的内容与体验直接关系到用户是否愿意长时停留,盒马也提出全链路内容视频化的规划,以实现商品力表达的提升。目前已有短视频场景包括:首页、搜索、商品详情、达人秀、沉浸式视频、真香视频、盒区首页 feeds 流、话题、UGC 内容、话题合集落地页、社群、菜谱、盒拍一键剪、直播回放、weex 等。” 本次优化的目标是将盒马 App 与主流短视频 App 体验对齐,如抖音、手淘等。优化具体的硬性指标有播放成功率、卡顿率、秒开率。另外,为了反应用户观看短视频过程中的真实体验,盒马还新增了体感指标:首帧渲染时长。 优化效果对比 效果视频可点击查看:从350ms到80ms,打造新零售场景下 iOS 短视频的极致丝滑体验 以上视频测试基于 iPhone 6S,可以看到抖音在大多数情况下,在滑到下...
- 下一篇
Jpom v2.8.2 已经发布,Java 项目在线管理
Jpom v2.8.2 已经发布,Java 项目在线管理 此版本更新内容包括: 新增功能 【server】仓库新增导入 Gitee、Github 仓库信息(感谢@ℳ๓₯㎕斌) 【server】ssh 新增命令模版、可以用于批量执行命令脚本 新增配置属性 system.timerMatchSecond 调度(定时任务)是否开启秒级匹配(感谢@大土豆) 缓存管理新增清除旧版本程序包功能 【server】用户权限新增绑定工作空间权限(指定工作空间的修改、删除、上传、执行等权限) 解决BUG、优化功能 【server】nginx 列表显示不全,无法滚动问题(感谢@) 【server】独立节点分发显示节点名称(感谢@奥特曼打猪) 【server】用户ID(登录名)支持邮箱格式(感谢@陈力) 【server】优化清除构建和删除构建时候删除相关文件操作(使用系统命令快速删除)(感谢@大土豆、Gitee PR ) 【server】项目搜索菜单名变更为项目列表 【server】调整自动清理日志数据逻辑、默认保留日志数据条数修改为 10000 【server】脚本模版在服务端统一查看、编辑、执行(感谢@...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- Red5直播服务器,属于Java语言的直播服务器
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS6,7,8上安装Nginx,支持https2.0的开启