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

2024-06-21 13:08

本文主要是介绍弱网测试-基于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

 

 

这篇关于弱网测试-基于linux TC(traffic control)网络模拟工具搭建及控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1081310

相关文章

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Linux安装MySQL的教程

《Linux安装MySQL的教程》:本文主要介绍Linux安装MySQL的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux安装mysql1.Mysql官网2.我的存放路径3.解压mysql文件到当前目录4.重命名一下5.创建mysql用户组和用户并修

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置