facebook atc介绍

Augmented Traffic Control(又名atc)是一种模拟网络状况的工具。由facebook开源,是一个允许开发人员控制设备与互联网连接的项目。atc可以模拟不同的网络条件,包括控制带宽,延迟,数据包丢失、数据包损坏、数据包重排序等几个因素都可以由atc来控制。atc运行在网关,可以控制连接到该网络的手机,设备的网络,atc有一个web界面,通过这个界面可以来切换不同的网络情况。atc内部使用了iptables和tc,因此只支持linux平台。

下面介绍facebook atc在 ubuntu 18.04(使用vmware 安装的虚拟机)系统下facebook atc 的安装和使用。

准备环境:

1、用vmware装个ubuntu
2、准备一个无线网卡,建议选择一个linux免驱的无线网卡,不然在开启热点的时候会提示失败。

ubuntu设置wifi热点功能

ubuntu需要利用hostapd和dhcp开启ap热点,首先安装hostapd和dhcp

sudo apt-get install hostapd isc-dhcp-server

然后编辑/etc/hostapd/hostapd.conf文件,内容如下图:

  • ssid 为wifi名称
  • wpa_passphrase 为wifi密码

接着启动hostapd服务

sudo hostapd /etc/hostapd/hostapd.conf 

如果没报错并搜到热点证明启动ap热点成功,如果有报错可以用以下命令解决:

sudo nmcli radio wifi off
sudo rfkill unblock wlan

如果提示hostapd进程已存在,则需要先杀掉进程

sudo killall hostapd

配置dhcp

编辑文件/etc/dhcp/dhcpd.conf, 内容如下图:

  • subnet为子网范围,netmask为子网掩码
  • range为可分配的IP地址范围
  • option router 为配置的网关
  • option domain-name-servers 为配置的dns,我用的8.8.8.8,即谷歌的dns服务器

设置无线网卡接口地址

sudo ifconfig wlx00026fb9727b 192.168.179.1 netmask 255.255.255.0

启动dhcp-server服务

sudo dhcpd wlx00026fb9727b -pf /var/run/dhcp-server/dhcpd.pid

若有提示pid或leases文件错误,就按照提示就去创建文件并赋予权限

sudo touch /var/lib/dhcp/dhcpd.leases
chmod a+x /var/lib/dhcp/dhcpd.leases

若开启dhcp服务没有提示报错,则代表开启成功,此时wifi应该可以连上,但是还不可以上网。

设置IP转发

sudo bash -c "echo 1 >/proc/sys/net/ipv4/ip_forward"

设置NAT转发

sudo iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE

因为设置步骤较多,可以写成2个脚本,ap-start.sh, ap-stop.sh。一切顺利的话,此时wifi应该可以连上了

配置facebook atc 

首先安装python2.7和pip,和django

sudo apt-get install python
sudo apt-get install python-pip
sudo apt-get install django

安装atc的组件

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

创建atc工程

django-admin startproject atcui
cd atcui

配置setting.py 的 INSTALLED_APPS

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

配置atcui/urls.py

from django.views.generic.base import RedirectView
from django.conf.urls import include urlpatterns = [
...
# 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)),
]

更新数据库

python manage.py migrate

启动atc

sudo atcd --atcd-wan ens33 --atcd-lan wlx00026fb9727b

不过启动atc的时候我遇到了https://github.com/facebook/augmented-traffic-control/issues/302 这里所说的问题,加上里面说的参数就解决了

--atcd-dont-drop-packets

启动atc web

python manage.py runserver 0.0.0.0:8000

导入facebook默认的几个配置文件

utils/restore-profiles.sh localhost:

这时用手机连上wifi热点,访问 http://192.168.179.1:8000

此时可以看到下图

使用方法为

turn on
select
update shaping

然后就大功告成了,可以试着切换不同的模拟网络试试效果。

 

参考文章:

https://www.cnblogs.com/coderzh/p/AugmentedTrafficControl.html

https://blog.csdn.net/itfootball/article/details/46763731

facebook atc弱网环境搭建和踩坑总结的更多相关文章

  1. Facebook ATC弱网环境搭建

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

  2. [转]FaceBook ATC 弱网测试工具环境搭建

    工具简介 ATC是FaceBook开源的移动网络测试工具Augmented Traffic Control(ATC),能够方便的让我们模拟各种网络环境进行测试. ATC有两个最吸引人的特点: 在手机上 ...

  3. Fiddler如何模拟弱网环境进行测试

    1.模拟弱网环境 打开Fiddler,Rules->Performance->勾选 Simulate Modem Speeds,勾选之后访问网站会发现网络慢了很多 2.Fiddler弱网的 ...

  4. App-IOS与Android弱网环境测试

    弱网环境下App的功能是否正常使用,是否会发生Crash的等情况? 1.IOS ios系统一般自带弱网环境测试,可以通过设置各种网络环境,模拟弱网环境,如3G,wifi,very bad Networ ...

  5. Fiddler实战之使用Fiddler模拟弱网环境(限速)

    1.模拟弱网环境 打开Fiddler,Rules->Performance->勾选 Simulate Modem Speeds,勾选之后访问网站会发现网络慢了很多 2.Fiddler弱网的 ...

  6. Linux系统搭建GitLab---阿里云Centos7搭建Gitlab踩坑

    一.简介 GitLab,是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目安装. 它拥有与GitHub类似的功能,能 ...

  7. Opencv环境配置及踩坑

    Opencv环境配置及踩坑 1.什么是Opencv OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux.Windows.Android和[ ...

  8. Pytorch及Yolov5环境配置及踩坑

    Pytorch及Yolov5环境配置及踩坑 1.何为Yolov5 yolo是计算机视觉方面用来进行目标检测的一个十分出名的开源框架,我搜不到官方的对此概括性的定义,但实际上也没什么必要,更重要的是会使 ...

  9. Charles-模拟弱网环境

    在做弱网测试时,经常需要模拟各种网络环境,Charles恰好也提供了网络限制的功能,我们可以在"Proxy->Throttle Settings"路径下找到它,如下图所示. ...

随机推荐

  1. codeforces 466B Wonder Room(思维,暴力)

    题目 参考了别人的博客,百度来的博客 #include<iostream> #include<string> #include<stdio.h> #include& ...

  2. [luogu4478 BJWC2018] 上学路线 (容斥原理+拓展lucas)

    传送门 Description 小B 所在的城市的道路构成了一个方形网格,它的西南角为(0,0),东北角为(N,M). 小B 家住在西南角,学校在东北角.现在有T 个路口进行施工,小B 不能通过这些路 ...

  3. PHP和zookeeper结合实践

    Zookeeper 简单介绍 Apache Zookeeper是开发和维护开源服务器的服务,它能够实现高度可靠的分布式协调. 安装Zookeeper(无需安装) wget http://mirror. ...

  4. jQuery Webcam Plugin jscam.swf文件反编译工具使用说明

    jQuery webcam plugin是一个在ie,firefox,chrome下都可以用的摄像头摄像及拍照用的插件. (http://www.xarg.org/project/jquery-web ...

  5. Linux Storage Stack Diagram 4.0

    https://www.thomas-krenn.com/en/wiki/Linux_Storage_Stack_Diagram

  6. HDU 4506

    EASY题,快速幂... #include <iostream> #include <cstdio> #include <cstring> #include < ...

  7. ZOJ 1649 Rescue(有敌人迷宫BFS)

    题意 求迷宫中从a的位置到r的位置须要的最少时间  经过'.'方格须要1s  经过'x'方格须要两秒  '#'表示墙 因为有1s和2s两种情况  须要在基础迷宫bfs上加些推断 令到达每一个点的时间初 ...

  8. Hibernate 自定义方言

    自定义一个方言类——Hibernate Dialect 标签: hibernatesqlserverjdbcmysql数据库java 2012-07-04 18:46 2847人阅读 评论(1) 收藏 ...

  9. HDU4300-Clairewd’s message-KMP

    题目链接:pid=4300">http://acm.hdu.edu.cn/showproblem.php?pid=4300 题目意思真的非常难读懂. 题意:给定两组字符串,第一组仅仅有 ...

  10. luogu4011 孤岛营救问题 分层图

    关键词:分层图 状态压缩 最短路径 分层图:现在要求从起点到终点的最优路线,但受到手里拿着哪些钥匙的影响,最优路线不单纯了.因此,决定一个节点.一条边的存在的数中应当增加一个手中拿有钥匙的状态.这样就 ...