乐天FUN88官方认证客服
  咨询电话:13694639973

FUN88乐天唯一认证平台

Facebook ATC弱网测试环境

  用户的网络环境千姿百态,弱网的、高延时的、丢包的。常有用户反馈偶发bug,我们测试人员却始终无法复现,根据用户的描述,开发排查可能是网络不稳定导致的,所以急需建个弱网环境来测试。

弱网工具简介:

  Augmented Traffic Control(ATC)是Facebook的一款开源的移动网络模拟工具,能很方便的模拟2g,3g,4g,delay,loss等各种网络场景。

硬件准备:

  我是搭建在本机的,所以需要用VM虚拟出一个Linux系统。

1.Ubuntu 16.04 LTS

2.USB无线网卡(芯片型号是RTL8188EUS)要确保无线网卡能支持AP(用iwlist查看)

 

一、配置Ubuntu无线wifi热点

  在操作之前先确认USB无线网卡和驱动都支持AP。

1.配置hostapd

  通过Hostapd可以将无线网卡切换为AP/Master模式,通过修改配置文件,可以建立一个开放式的(不加密)的,WEP,WPA或WPA2的无线网络。

apt-get install hostapd

  新建hostapd文件:vi /etc/hostapd/hostapd.conf

interface=wlx488ad2a0e0fe //wifi设备名称driver=nl80211ssid=autotesthw_mode=gchannel=10macaddr_acl=0auth_algs=3wpa=2wpa_passphrase=12345678 //密码wpa_key_mgmt=WPA-PSKwpa_pairwise=TKIP CCMPrsn_pairwise=TKIP CCMP

  启动AP

hostapd -B /etc/hostapd/hostapd.conf

 此时应该有一个autotest的wifi可以连接,连接后处于“正在获取IP”状态。

 

2.配置dhcpd

   dhcp简单来说是管理ip的

apt-get install isc-dhcp-server

  开启DHCP服务器是为了让终端能够获取到IP地址,分配的地址是私有的,因此只要不与公有的地址相冲突就可以,RFC 1918 为私有网络预留出了三个IP 地址块,上述三个范围内的地址不会在因特网上被分配,我们可以放心使用。

A 类:10.0.0.010.255.255.255B 类:172.16.0.0172.31.255.255C 类:192.168.0.0192.168.255.255

  我们需要配置/etc/dhcp/dhcpd.conf文件,添加要分配的网段,指明分配的地址范围,默认网关和DNS服务器地址。在文件最后我们添加以下内容。注意要分配的网段不能和主机ens33所处的网段相同。

subnet 192.168.0.0 netmask 255.255.255.0  {    range 192.168.0.2 192.168.0.10;    option routers 192.168.0.1;    option domain-name-servers 8.8.8.8;  }

  配置无线网口wlx488ad2a0e0fe所处的网段,和上面的网段要一致。

ifconfig wlx488ad2a0e0fe 192.168.0.1 netmask 255.255.255.0

  接下来开启dhcp,热点会给接入的设备分配ip,从 192.168.0.2~192.168.0.10 中随机取一个。

service isc-dhcp-server start

  现在应该能连接上热点,但还不能上网。

 

3.配置NAT

 我们需要打开转发功能,让192.168.0.1/8网段的地址都通过网卡ens33转发出去。

sysctl net.ipv4.ip_forward=1iptables -t nat -A POSTROUTING -s 192.168.0.1/8 -o ens33 -j MASQUERADE

  手机连接wifi热点,若可以正常上网,表示热点配置成功了。

 

二、配置ATC

1.安装和使用virtualenv创建python虚拟环境

apt install virtualenvvirtualenv project_ATCcd project_ATC/binsource activate

 

2.安装python-pip工具

  用python3+尝试安装了一次,没有成功。然后发现有些依赖第三方库是python2+写的,所以先确保你的python版本是python2.7,然后安装对应的pip工具。

apt-get install python-pip

  通过pip下载安装ATC需要的Django组件。

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

 

3.修改ATC配置

  用命令创建一个Django工程

django-admin startproject ATC_UI

  编辑配置文件 setting.py

cd ATC_UI/ATC_UIvi settings.py

  在INSTALLED_APPS添加如下内容:

"rest_framework","atc_api","bootstrap_themes","django_static_jquery","atc_demo_ui","atc_profile_storage",

  ALLOWED_HOSTS 修改如下,‘*’允许所有ip访问。

ALLOWED_HOSTS = ["*"]

 

  编辑文件urls.py

vi urls.py

  修改增加如下配置:

from django.views.generic.base import RedirectViewfrom django.conf.urls import include urlpatterns = [ url(r"^admin/",admin.site.urls), url(r"^api/v1/",include("atc_api.urls")), url(r"^atc_demo_ui/",include("atc_demo_ui.urls")), url(r"^api/v1/profiles/",include("atc_profile_storage.urls")), url(r"^$",RedirectView.as_view(url="/atc_demo_ui/", permanent=False)), ]

  最后切换到manage.py目录,执行更新Django数据库:

python manage.py migrate

 

 4.设置网卡

  --atcd-wan 参数  指定网卡作为公网连接, --atcd-lan 参数  指定此网卡作为内网连接。

atcd --atcd-wan ens33 --atcd-lan wlx488ad2a0e0fe

 

5.运行ATC_UI  

  然后就可以运行Django啦,runserver 参数 指定端口。

python manage.py runserver 0.0.0.0:8000

  

6.使用官方已经配好的网络配置文件

  具体使用方法:

git clone https://github.com/facebookarchive/augmented-traffic-control.gitcd augmented-traffic-controlutils/restore-profiles.sh 192.168.0.1:8000

 

三、ATC使用方法

1.手机浏览器输入192.168.0.1:8000,可以看到下面的UI

 

2.选择需要的网络环境,点击“select”,然后点击最上面的“update shaping”,也可以自定义网络。然后你可以愉快的测试了,而且每部手机连接的网络互不影响,也就是说你设置了限速只对你自己有效,不会影响其他人。

 

 

 

 

部分参考github:https://github.com/facebookarchive/augmented-traffic-control