弱网测试-基于linux TC(traffic control)网络模拟工具搭建及控制

APP弱网测试,弱网工具有很多现成的,但是对比其他工具来说,使用linux tc控制起来比较方便强大,自由度较大,可以推荐使用

所需硬件:

路由器(尽量使用5G网络,因为2.4G网络干扰比较大)

网线若干

linux电脑一台,带双网卡,如果单网卡,可以用USB转网口的设备来完成,尽量用USB3.0到网口的设备

 

所需软件:

系统:ubuntu

tc  – traffic control

iptables

连接方式:

注:实际的网口设备编号根据自己的电脑而定

 

操作步骤:

设置路由器的出口地址为静态地址:192.168.100.2

设置无线网络,提供被测试APP的上网服务

路由器WAN连到电脑的对内网卡

在Linux下执行;

sudo iptables -I FORWARD -o eth1 -j ACCEPT
sudo iptables -t nat -I POSTROUTING -s 192.168.100.0/24 -j MASQUERADE
sudo iptables -I INPUT -i eth1 -j ACCEPT
sudo iptables -I FORWARD -i eth1 -j ACCEPT

 

控制网络

所有的命令必须在root权限下执行

控制时延(delay)

固定时延100ms

tc qdisc add dev eth1 root netem delay 200ms

延时100+-20ms
tc qdisc add dev eth1 root netem delay 200ms 30ms

延时100+-20ms 正态分布的方式
tc qdisc add dev eth1 root netem delay 200ms 30ms distribution normal

 

qdisc: modify the scheduler (aka queuing discipline)
add: add a new rule
dev eth1: rules will be applied on device eth1
root: modify the outbound traffic scheduler (aka known as the egress qdisc)
netem: use the network emulator to emulate a WAN property
delay: the network property that is modified
200ms: introduce delay of 200 ms

控制丢包

修改丢包率为5%:
tc qdisc add dev eth1 root netem loss 5%

设置抖动的丢包率: 10% +-2%

tc qdisc add dev eth1 root netem loss 10% 2%

 

设置破损包:(1%)

tc qdisc add dev eth1 root netem corrupt 1%

 

设置重复包

tc qdisc add dev eth1 root netem duplicate 1%

设置reorder数据

tc qdisc add dev eth1 root netem reoder 1%

 

设置带宽

tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms

tbf: use the token buffer filter to manipulate traffic rates
rate: sustained maximum rate
burst: maximum allowed burst
latency: packets with higher latency get dropped

 

限制流向个别IP

DEV=eth1

LOSS=10%

DELAY=200ms

IP=“65.172.181.4/32”

tc qdisc add dev $DEV root handle 1: htb r2q 1
tc class add dev $DEV parent 1: classid 1:9999 htb rate 100Mbit ceil 100Mbit
tc qdisc add dev $DEV parent 1:9999 handle 11: netem delay $DELAY 80ms distribution normal loss $LOSS 2% corrupt 1% duplicate 2% reorder 2%
tc filter add dev $DEV parent 1: protocol ip prio 16 u32 match ip dst $IP flowid 1:9999

 For more info on traffic classification see LARTC -- filters

删除策略:

tc qdisc del dev eth1 root

 

注:

如需具体操作还需要参考网络模拟器

https://wiki.linuxfoundation.org/networking/netem

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值