2020树莓派两种方式搭建ATC网损测试系统

ATC介绍

https://github.com/facebookarchive/augmented-traffic-control

ATC是一个基于TC的端到端网络数据转发拥塞项目。

通过利用TC模拟在两个网卡之间的数据延时、丢包、抖动等网络模型。

python-django是一个框架,用于atc交互用的。

树莓派介绍

image

树莓派就是一个嵌入式linux设备,装好系统就是一台五脏俱全的pc主机,就是性能差了点,最新版本的raspiberry 4B 最高配置可选4GB内存的,性能据说是pi3b+的3倍。对比路由器,其性能还是强很多的。

树莓派硬件接口介绍

最新的pi4B 有一个千兆网口,一个type-c电源接口,两个4k级别的hdmi口,一个音频输出口,两个usb3.0口,两个usb2.0口,一组24pin的gpio口,有很强的拓展性,还有一个连接相机的csi口,无线连接方面,高性能蓝牙,双频wifi。整体来说树莓派4B对比3B升级挺多的,也挺值得买的。

网络拓扑图介绍

有两种搭建模式,如果想用树莓派发射热点并使用wifi接入,可以只用一根网线连接。

第二种模式是通过在树莓派增加一个USB网卡,随后用有线USB网卡连接路由器,路由器当作交换机使用,拓展树莓派的网口和wifi,测试树莓派的wifi性能没有路由器好。所以这种设置模式比较适合距离wifi较远的使用场景。


一图胜千言,这个图要仔细看,认真看!!

AP热点模式ATC搭建教程

第一步,进入系统中设置本地lcoal为china,不然热点频段不符合国内要求,其他设备连接的时候会出现断联的情况。

随后按照以下教程安装一键热点开启脚本

#全部使用root权限
#将代码copy到本地,安装 全部使用root权限
git clone https://github.com/oblique/create_ap
cd create_ap
make install

#安装依赖的库
apt-get install util-linux procps hostapd iproute2 iw haveged dnsmasq

#执行命令

#创建WiFi热点(GitHub上有多种方式创建,可以查找自己需要的那种)
sudo create_ap wlan0 eth0 热点名 密码

#开机启动
将 'sudo create_ap wlan0 eth0 热点名 密码 & ' 添加到/etc/rc.local文档中,即可开机启动

安装ATC脚本

https://github.com/facebookarchive/augmented-traffic-control 官网根据官网安装和配置,在配置settings.py文件时增加ALLOWED_HOSTS修改 ,允许所有ip使用ATC。

ALLOWED_HOSTS = ['*'] 

随后就是创建启动脚本:(脚本路径和名字: /home/pi/atcui/autoShell.py )

sudo nano /home/pi/atcui/autoShell.py
#写入以下内容

# coding: UTF-8
import sys
import time
reload(sys)
sys.setdefaultencoding('utf8')
import subprocess
import os
import commands

#os.system('cmd1 && cmd2')
startAP = "sudo create_ap wlan0 eth0 pi33 12345678  &"
runAtcServer = "sudo python /home/pi/atcui/manage.py runserver 0.0.0.0:8000"
startAtcInit = "sudo atcd --atcd-wan eth0  --atcd-lan wlan0"

subprocess.Popen(startAP, shell=True)
time.sleep(10)
subprocess.Popen(runAtcServer, shell=True)
time.sleep(10)
subprocess.Popen(startAtcInit, shell=True)
#subprocess.call(cmd,shell=True)

设定自启动,在etc/rc.local文件添加

python /home/pi/atcui/autoShell.py &

随后愉快地重启: sudo reboot

重启后,连接wifi,进入192.168.12.1:8000 网址后就可以看到熟悉的atc页面了。

路由桥接模式ATC搭建教程

把树莓派和路由器的wan口用有线连接在一起,路由器关闭dhcp服务器功能。树莓派通过自带的网口和外网连接。

参考这位台湾小友设置ap的方式去设置有线路由模式

首先,将目前已经安裝的软件都先更新到最新。

sudo apt update
sudo apt upgrade

安装对应的软件dnsmasq,用于解析dns

sudo apt install dnsmasq -y

停用对eth1 (usb有线网卡) 的DHCP客户端ip分配,设定固定ip。

sudo nano /etc/dhcpcd.conf
#编辑dhcpd.conf文件,在最后输入下文,随后保存,eth1是你作为lan口(usb网卡)的网卡名称,可以在ifconfig命令中查看
#这里采用的ip段192.168.7.xxx不要和你的wan口ip相同,防止发生冲突。
interface eth1
static ip_address=192.168.7.1/24
static routers=192.168.7.1
static domain_name_servers=8.8.8.8

设置dns

sudo nano /etc/dnsmasq.conf
# 设定dns内容,在此文件中输入下文,随后保存,eth1是网卡名称,dhcp-range是设定可用ip范围,一般是除了网口ip(上文设置的static routers)以外, .2到.253都设置为可分配ip,24h是指此ip刷新周期为24小时。
interface=eth1
domain-needed
bogus-priv
dhcp-range=192.168.7.2,192.168.7.253,24h

设定IP转发策略,用于wan口和lan口不同网卡不同网段之间的数据转发。

sudo nano /etc/sysctl.conf
net.ipv4.ip_forward=1
#开启ipv4转发功能
#退出文件并保存
#持续输入以下命令用于IP转发:
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
#随后保存上述指令并设为开机自动运行
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
sudo nano /etc/rc.local
#在开机自启动文件rc.local中写入以下命令:
sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
iptables-restore < /etc/iptables.ipv4.nat

随后又到了喜闻乐见的重启环节:

sudo reboot

重启后设备连接到usb网卡上就可以自动获取ip,并可以正常上网了。如果重启后不能正常上网,请排查问题后再往下走。

随后是按照ATC,步骤和注意事项已经在上一个模式中给出,这里就不重复了,但是在编写rc.local文件时,启动atc的脚本要最后再运行,且脚本autoShell.py 要修改成下面这样子,就是删除AP开启指令。

# coding: UTF-8
import sys
import time
reload(sys)
sys.setdefaultencoding('utf8')
import subprocess
import os
import commands

#os.system('cmd1 && cmd2')
#startAP = "sudo create_ap wlan0 eth0 pi33 12345678  &"

runAtcServer = "sudo python /home/pi/atcui/manage.py runserver 0.0.0.0:8000"
startAtcInit = "sudo atcd --atcd-wan eth0  --atcd-lan eth1"

#subprocess.Popen(startAP, shell=True)
time.sleep(10)
subprocess.Popen(runAtcServer, shell=True)
time.sleep(10)
subprocess.Popen(startAtcInit, shell=True)
#subprocess.call(cmd,shell=True)

设置完atc重启后,连接路由器lan口或者连接路由器wifi,进入192.168.7.1:8000 网址后就可以看到熟悉的atc页面了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容