【开发者福利】弱网络接入指引

1. 前言

本文将描述怎么用最快和最低成本搭建一个ATC服务来构造一个弱网络wifi,然后使用自研的PC工具“网络分析大师”来快捷地切换不同的弱网络场景,免去配置ATC弱网络参数的繁杂。

1.1 安装程序

包括:

1. Vmware Workstation虚拟机

2. Ubuntu 14.04操作系统虚拟机镜像vmdk

3. Ubuntu 14.04操作系统iso-64位

4.网络分析大师

1.2 网络环境

需要使用体验网或外网

1.3 硬件要求

一台PC,一块无线网卡(建议如下的带多天线的PCI网卡,亲测半层楼无遮挡可以满格信号)

2. Ubuntu安装

Ubuntu(乌班图)是一个以桌面应用为主的Linux操作系统 , 弱网络应用的ATC将搭载在其上,所以要现行安装。

2.1 虚拟机or双系统

虚拟机装起来略为方便,因为提供的虚拟机镜像已经装好了整个环境,只需要启动ATC就可以了。

但是虚拟机没有双系统稳定,还是建议做双系统,直接把Ubuntu装起来,然后再安装python 2.7+和Django 1.7+

2.2 虚拟机安装

安装Vmware Workstation,同时直接加载服务器上提供的Ubuntu操作系统虚拟机镜像vmdk即可

2.3 双系统安装

如果需要下载32位的Ubuntu安装镜像,可去官网:

http://www.ubuntu.com.cn/download/desktop

3. Ubuntu wifi 热点创建

最终我们的测试手机将连上Ubuntu的wifi热点来接入弱网络环境。

Ubuntu的环境下有多种创建热点的方式,自己也尝试过不同的方法,有的方法可以创建成功,但Android系统无法找到,有的根本就无法创建成功,最终选择了一个linux系统安装软件的方式来尝试,成功创建并启动。把这最简单的方法备份一下。

3.1 选择Ubuntu版本,更新软件源

这里选择的ubuntu版本为稳定的14.04版本,若选择最新的15.04版本,可能会存在无相应的软件源。当然,如果你能找到对应的软件源,也可以手动进行安装。

$sudo add-apt-repository ppa:nilarimogard/webupd8 $sudo apt-get update $sudo apt-get install ap-hotspot

3.2 配置ap-hotspot

更新好软件源,然后安装完成ap-hotspot,进入配置界面,输入ssid和密码,即可:

$sudo ap-hotspot configure //配置界面,需要输入ssid和密码 Detecting configuration... Detected eth0 as the network interface connected to the Internet. Press ENTER if this is correct or enter the desired interface below (e.g.- eth0, ppp0 etc.)://默认按Enter即可 Detected wlan0 as your WiFi interface. Press ENTER if this is correct or enter the desired interface (e.g.- wlan1)://默认按Enter即可 Enter the desired Access Point name or press ENTER to use the default one (myhotspot)://Wifi名字 Enter the desired WPA Passphrase below or press ENTER to use the default one (qwerty0987)://wifi 密码

3.3 启动wifi热点

执行完以上步骤之后,可以启动wifi

$sudo ap-hotspot start //启动wifi Starting Wireless Hotspot... Wireless Hotspot active

当出现以上内容即为启动成功,这个时候可以通过移动设备连接。

3.4 可能会碰到的问题

3.4.1 一直处于Starting Wireless Hotspot…状态

ubuntu14.04上使用的版本为hostapd2.x版本,但hostapd2.x版本存在bug,这里的解决方案是需要将默认版本移除,使用hostapd1.0版本即可

$sudo apt-get remove hostapd

重新安装hostapd1.0版本,这里在网上提供的版本中,找不到对应的包,这里在父目录下找到了对应1.0的安装包,下载安装之:

$wget http://old-releases.ubuntu.com/ubuntu/pool/universe/w/wpa/hostapd_1.0-3ubuntu2.1_amd64.deb  //如果是32位系统,此目录下可找到32位包 sudo dpkg -i hostapd*.deb  //指定刚才下载的安装包 sudo apt-mark hold hostapd //禁止hostapd自动更新到新版本

安装完成之后,重启即可使用。

3.4.2 “Another process is already running”问题

这个问题是在已经有一个wifi热点在运行的时候,重新进入的时候尝试重新打开时,会报此错误,按照如下操作即可解决

sudo rm /tmp/hotspot.pid  //删除已有的热点之后重新启动即可

4. ATC安装

4.1 ATC简介

ATC是Facebook开源移动网络测试工具,可以用来模拟不同的网络环境,可控制的方面主要包括带宽、时延抖动、丢包率、错包率、包重排等衡量网络质量的重要指标。其主要的工作原理是利用了Linux流量控制系统,通过纯python的网络库pyroute2调用netlink的API控制的。刚才提到的几个重要的指标:

· bandwidth · latency · packet loss · corrupted packets · packet ordering

ATC网络结构构成图

ATC网络结构构成图

4.2 ATC安装所需要的环境

如果直接使用提供的虚拟机镜像,则ATC已经安装好,不需要再安装,跳过安装步骤直接运行即可。如果自行搭建双系统或者全新虚拟机,则需先安装ATC。

以下步骤都在ubuntu14.04上完成:

ATC只能运行在Linux上,其安装环境使用的是虚拟机+ubuntu+无线网卡及python 2.7+和Django 1.7+。

这里使用pip这种最简单方式安装ATC

首先,必须安装Python2.7以上版本,然后安装pip:

sudo apt-get install python-pip python-dev build-essential)

sudo pip install --upgrade pip

然后,使用pip直接安装好ATC所有组件:

$pip install atc_thrift atcd django-atc-api django-atc-demo-ui $pip install django-atc-profile-storage

所有都安装完成之后,需要先创建一个Django工程将ATC配置运行起来

$django-admin startproject atcui $cd atcui

创建完成django工程后,需要进行一些配置才能够使应用完全运行起来,首先,编辑atcui/setting.py,添加ATC应用到INSTALLED_APPS

INSTALLED_APPS = (     ...     # Django ATC API     'rest_framework',     'atc_api',     # Django ATC Demo UI     'bootstrap_themes',     'django_static_jquery',     'atc_demo_ui',     'atc_profile_storage', )

接着,编辑atcui/urls.py,添加ATC应用的路由信息到urlpatterns,经过这步之后,在之后url方式访问才可以有正确的响应: from django.views.generic.base import RedirectView urlpatterns = patterns('',     ...     # Django ATC API     url(r'^api/v1/', include('atc_api.urls')),     # Django ATC Demo UI     url(r'^atc_demo_ui/', include('atc_demo_ui.urls')),     # Django ATC profile storage     url(r'^api/v1/profiles/', include('atc_profile_storage.urls')),     url(r'^$', RedirectView.as_view(url='/atc_demo_ui/', permanent=False)), )

最后,还需要生成Django工程的数据库文件:

$python manage.py migrate

4.3   运行ATC

首先要启动的是核心组件atcd,同时需要指定wan口和lan口,默认启动方式如下:

$sudo atcd

这里假定eth0是连接wan的接口,eth1是连接lan的接口,以上操作就可生效

4.4   设置ATC弱网络环境

当ATC成功运行,并且可以通过http://localhost:8000访问时,我们有两种方式可以进行网络的设置。

· 通过ATC UI进行设置

· 通过ATC提供的API进行网络类型设置

· 通过网络分析大师来自动设置(推荐方案) ——将在下一章节单独介绍,建议先看

4.4.1 通过ATC UI进行设置

首先,手机连接上热点wifi

其次,通过浏览器访问ATC WEB页面,你会看到下图的页面,滑动页面可以看到,其中包含了Notifications、Authentication、Profiles、Shaping Setting。前两项可不用,直接使用后两部分。

接着,Turn On之后,通过select已有的网络模型来设置手机的网络环境。当select之后就会出现Update Shaping,点击之后即生效)。

或者,通过创建新的网络模型来设置手机的网络环境。打开Sharping Settings,输入各项模拟值,下图为PC侧截图(手机侧同理)。输入完成之后,点击Profiles下面的Create按钮并填写相应的模型名称。同样,点击Update Shaping使设置生效。

最后,wanem以及ATC两个环境都存在,但不能在同一台服务器上使用,所以,大家弱网络测试时,移步到ATC测试。有什么使用问题,可以一起交流下。

4.4.2 通过ATC API设置网络模型

·通过GETing /api/v1/shape/获取当前设备的网络状态(模型)

·通过POSTing /api/v1/shape/对当前设备网络状态进行设置

·通过DELETE /api/v1/shape/ 对当前设备网络状态进行删除,恢复正常网络

Examples:

·检查当前设备的网络状态

当前设备未有任何网络状态设置↑

当前设备设置了对应的网络状态↑

·设置设备的网络状态 设置网络状态时,通常需要先配置好网络模型的各项参数,可以本地设置好参数,然后使用curl进行设置

·删除设备的网络状态

至此,通过ATC API即可完成对设备的查询、设置、删除。

5.网络分析大师

网络分析大师目前提供抓包、弱网络接入的功能。本文中只介绍弱网络接入步骤:

·启动ATC

·启动PC上启动网络分析大师,插上移动设备,点击“连接设备”

·移动设备连上ATC服务器的热点wifi

·通过下方的带宽限制、网络类型直接切换当前设备的弱网络环境

以上即是弱网络搭建的指引,看上去复杂程度非常高。但腾讯WeTest云真机可以帮你省去这些搭建烦恼。只需鼠标轻松点击,完美复制弱网络条件。作为服务腾讯游戏十年的测试工具,腾讯WeTest云真机的“弱网络测试”功能不但能为开发者节省宝贵的测试时间,还提供了更专业的弱网络环境数据。

腾讯WeTest官网: http://wetest.qq.com/

腾讯WeTest是腾讯游戏官方推出的一站式游戏测试平台,与全民突击、天天酷跑、全民超神等精品手游强强联手深入合作,十余年来不断为游戏提供优秀测试方案和测试工具,是推动腾讯游戏研发效率不断提升、对游戏开发的全生命周期进行质量保障的重要平台。

长按二维码关注腾讯WeTest微信公众号

或者访问wetest.qq.com体验更多游戏质量服务

原文发布于微信公众号 - 腾讯WeTest(TencentWeTest)

原文发表时间:2016-03-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张戈的专栏

WP-PostViews Plus统计插件在TwentyTen主题下的使用

为了博客的文章浏览统计,让我这个不怎么熟悉 PHP 的菜鸟硬是从昨晚折腾到现在! 主要原因是我不太熟悉 PHP 的结构,结果被网上的教程搞得云里雾里,通过度娘搜...

329100
来自专栏移动开发之家

IJKPlayer编译so支持HTTPS的踩坑历程

同志,github来过没?右转不屑 ----> https://github.com/CarGuo

23330
来自专栏数据和云

DBA生存警示:误关闭生产库案例及防范建议

编辑手记:对于资深的老DBA们,他们在漫长的职业生涯中养成了很多稀奇古怪的守则,以在复杂多变的环境中“幸存”,这源于无数血泪的教训,我曾经在《数据安全警示录》...

35070
来自专栏张高兴的博客

张高兴的 Windows 10 IoT 开发笔记:部署 ASP.NET Core 2 应用

21220
来自专栏编程一生

《两地书》--Kubernetes(K8s)基础知识(docker容器技术)

  大家都知道历史上有段佳话叫“司马相如和卓文君”。“皑如山上雪,皎若云间月”。卓文君这么美,却也抵不过多情女儿薄情郎。

24540
来自专栏Linuxer的专栏

LEP 与负载均衡 : 以 PCDUINO 实际案例来使用LEP提高网络带宽

这篇文章的内容涉及用 LEP 监控 PCDUINO 3nano 电路板网络流量,观察负载均衡 IDLE、 IRQ 和 SoftIRQ,以及用 RPS/RFS ...

20100
来自专栏lestat's blog

树莓派玩耍记

这篇文章是自己入手树莓派之后的一些使用记录 前些天看 v2ex 上有人讨论树莓派,于是出于好奇在淘宝上淘了一只树莓派来玩玩 体积超级小… ? 一个板子,...

38650
来自专栏小文博客

华为Mate10安装黑域

49140
来自专栏技巅

linux内核崩溃问题排查过程总结

57140
来自专栏QQ音乐技术团队的专栏

​使用Buck构建Android工程

0.导语 不论是“QQ音乐”亦或是“全民K歌”,其Android客户端目前都是功能繁多、体量庞大、方法数超过10万的庞大应用。庞大体量的工程带来了构建工程的一个...

615100

扫码关注云+社区

领取腾讯云代金券