linux 弱网环境模拟,弱网模拟 tc/netem 辅助工具 pynetem

pynetem是一个Python实现的工具,用于在Linux系统中模拟网络延迟、丢包、重复包等条件。它可以替代tc/netem,并提供了命令行和Web接口两种使用方式。用户可以通过命令行参数或API调用来设置网络规则,如延迟、丢包率、重复包比例等。Web接口默认监听8899端口,提供多个API接口进行规则的设置和清除。此外,停止Web服务时会自动清理所有规则。
摘要由CSDN通过智能技术生成

https://github.com/GuoTengda1993/pynetem

因为 tc/netem 只在 linux 系统中存在,所以只能在 Linux 系统中安装:

pip install pynetem

### 使用

有两种模式:命令行模式、Web 模式,两种模式下每次传入新规则都会将旧规则替换掉。

命令行模式

输入pynetem -h可以查看帮助信息,参数和 tc/netem 基本一致,只使用上有些许区别,点击此链接即可查看 tc/netem 的相关文档:netem

向远端 linux 服务器发送需添加如下参数:

--host 远端服务器IP地址

--usrname 用户名

--password 密码

使用示例:

# 该命令将 eth0 网卡的传输设置为 100ms ,同时,大约有 30% 的包会延迟 ± 10ms 发送

pynetem -i eth0 --delay=100ms,10ms,30%

# 该命令将 eth0 网卡的传输设置为随机丢掉 1% 的数据包,成功率为 30%

pynetem -i eth0 --loss=1%,30%

# 该命令将 eth0 网卡的传输设置为随机产生 1% 的重复数据包

pynetem -i eth0 --duplicate=1%

# 该命令将 eth0 网卡的传输设置为随机产生 0.2% 的损坏的数据包 。 (内核版本需在2.6.16以上)

pynetem -i eth0 --corrupt =0.2%

# 该命令将 eth0 网卡的传输设置为:有 25% 的数据包(50%相关)会被立即发送,其他的延迟 10ms

pynetem -i eth0 --delay=10ms --reorder=25%,50%

# 该命令将 eth0 网卡的传输设置为 延迟100ms,同时限定网卡的出速率

pynetem -i eth0 --delay=100ms --rate=256kbit

# 该命令将 eth0 网卡的传输设置为 在符合CIDR条件下延迟100ms&限定网卡的出速率

pynetem -i eth0 --delay=100ms --rate=256kbit --dst=10.10.10.10/32

Web 模式

运行此模式可以对外提供接口,默认开启8899端口,也可以指定其它端口。

pynetem --web --port=9000

共有 8 个 API 可以调用:

[GET] /pynetem/help -- Get demo post data and simple description

[GET] /pynetem/listInterfaces -- Get interfaces name of host

[GET] /pynetem/getRules?eht= -- Get qdisc rules by interface

[GET/DELETE] /pynetem/clear?eth= -- Clear all rules

[POST] /pynetem/setRules?eth= -- Set tc qdisc rule

[POST] /pynetem/brctl/addbr -- Set bridge, the bridge name is pynetem_bridge by defaut

[GET/DELETE] /pynetem/brctl/delbr -- Delete pynetem_bridge

[POST] /pynetem/brctl/addif -- Add interface(s) to pynetem_bridge

请求体中,如果设置参数为None或"",则会忽略此参数,请求体示例如下:

[POST] /pynetem/setRules?eth= {"delay":"100ms 10ms 25%","distribution":"normal","reorder":"25% 50%","loss":"0.3% 25%","duplicate":"1%","corrupt":"0.1%","rate":"256kbit","buffer":1600,"limit":3000,"dst":"10.10.10.0/24"}

配置 Linux 网桥:[POST] /pynetem/brctl/addbr

stp is "on" by default.

{"interfaces":["eth0","eth1"],"stp":"on"}

需要注意的是,当按下ctrl + c关停 web 服务时,会自动将所有网卡接口下的所有 qdisc 规则全部清空。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值