• Facebook ATC弱网环境搭建


      用户的网络环境并不是一直处于能高速传输的状态,网络的好坏受用户所处地理位置,同一基站使用人数等许多因素影响。百度公开的数据显示,百度APP使用者约有1%的人群处于弱网状态。所以研究弱网测试,来提升这部分流量用户的体验,非常有必要。低带宽、低信号强度、高延时、丢包率高等都属于弱网。弱网情况下通常还伴随的隐藏的bug,用户体验差等因素。开展这项测试前,我们得把环境搭起来,所以今天先来介绍下如何搭建ATC。

    弱网工具简介:

      Augmented Traffic Control(ATC)是Facebook的一款开源的移动网络模拟工具,能很方便的模拟2g,3g,4g,wifi,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=nl80211
    ssid=autotest
    hw_mode=g
    channel=10
    macaddr_acl=0
    auth_algs=3
    wpa=2
    wpa_passphrase=12345678      //密码
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=TKIP CCMP
    rsn_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.255
    B 类:172.16.0.0172.31.255.255
    C 类: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=1
    iptables -t nat -A POSTROUTING -s 192.168.0.1/8 -o ens33 -j MASQUERADE

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

    二、配置ATC

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

    apt install virtualenv
    virtualenv project_ATC
    cd project_ATC/bin
    source 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_UI
    vi 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 RedirectView
    from 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

    然后我遇到上网速度很慢的情况,按照GitHub上的解决方法,给atcd命令加个参数:https://github.com/facebookarchive/augmented-traffic-control/issues/314

    --atcd-dont-drop-packets

    5.运行ATC_UI  

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

    python manage.py runserver 0.0.0.0:8000

      

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

      具体使用方法:

    git clone https://github.com/facebookarchive/augmented-traffic-control.git
    cd augmented-traffic-control
    utils/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

  • 相关阅读:
    脏读,不可重复读,幻读区别和避免
    CSRF和XSS区别和预防
    mysql刷题(不定时更新)
    (12)arp命令(每周一个linux命令)
    (11)nc命令(每周一个linux命令)
    Codeforces Round #653 (Div. 3)(A, B, C, D, E1详解)
    Gauss高斯消元——模板
    F:Maximum White Subtree(dp)
    E:Three Blocks Palindrome(hard and easy)(树状数组 ? 前缀和?)
    E:K-periodic Garland(DP)
  • 原文地址:https://www.cnblogs.com/shenh/p/10009159.html
Copyright © 2020-2023  润新知