8000 GitHub - Kit086/kit-clumsy
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Kit086/kit-clumsy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

kit-clumsy

注意

请谨慎使用,不要在生产环境中使用该工具!!!

该工具是我在全新的虚拟机上自动的网络模拟工具,用于模拟不同网络环境下的网络延迟、带宽、丢包率等情况。该工具基于 tciptables 实现,可以在 Linux 系统上使用。

该工具未经过充分测试,无法确定所有功能均有效。

该工具可能会清除现有的网络配置,因此请谨慎使用。

用法示例

0. 赋予脚本可执行权限

运行以下命令为脚本赋予可执行权限:

sudo chmod +x configure.sh check.sh delete.sh

1. 配置网络规则

使用 configure.sh 脚本配置网络规则。例如:

bash configure.sh -i ens33 -s 192.168.18.202 -d 192.168.18.204 -U 1000ms -D 1000ms -B 128kbit -b 512kbit -J 100ms -L 50%

参数说明:

  • -i:指定网卡名称(必填)。如 ens33,表示配置应用于此网卡。
  • -s:指定源地址(必填)。如 192.168.18.202,表示流量从此地址发出。
  • -d:指定目标地址(必填)。如 192.168.18.204,表示流量发往此地址。
  • -U:设置上行延迟(可选)。如 500ms,表示上行流量的延迟为 500ms。
  • -D:设置下行延迟(可选)。如 600ms,表示下行流量的延迟为 600ms。
  • -B:设置上行带宽(可选)。如 128kbit,表示上行带宽限制为 128 kbit。
  • -b:设置下行带宽(可选)。如 512kbit,表示下行带宽限制为 512 kbit。
  • -J:设置延迟抖动(可选)。如 50ms,表示延迟的抖动范围为 ±50ms。
  • -L:设置丢包率(可选)。如 5%,表示 5% 的流量会被丢弃。

示例命令:

bash configure.sh -i ens33 -s 192.168.18.202 -d 192.168.18.204 -U 1000ms -D 1000ms -B 128kbit -b 512kbit -J 100ms -L 50%

示例解释:

上面命令的含义是:

  • 上行规则(从本地主机到目标服务器 192.168.18.204):

    • 延迟:1000ms
    • 抖动:±100ms
    • 带宽限制:128kbit
    • 丢包率:50%
  • 下行规则(从目标服务器 192.168.18.204 到本地主机 192.168.18.202):

    • 延迟:1000ms
    • 抖动:±100ms
    • 带宽限制:512kbit
    • 丢包率:50%

2. 检查当前网络配置

使用 check.sh 脚本查看当前网络配置:

bash check.sh -i ens33

参数说明:

  • -i:指定网卡名称(必填)。如 ens33,表示检查该网卡上的配置。

输出示例:

执行后会显示:

  • 上行规则:当前网卡(如 ens33)的 tc qdisctc class 配置。
  • 下行规则:虚拟接口 ifb0 上的 tc qdisctc class 配置。
  • iptables 规则mangle 表 8566 中的流量标记规则。

3. 删除网络配置

使用 delete.sh 脚本清理所有网络限制:

bash delete.sh -i ens33

参数说明:

  • -i:指定网卡名称(必填)。如 ens33,表示清理此网卡上的所有网络限制。

功能描述:

  • 清除网卡 ens33 上的上行规则。
  • 清除虚拟接口 ifb0 上的下行规则。
  • 删除 iptables 中的流量标记规则。
  • 关闭虚拟接口 ifb0

完整使用流程

配置网络规则:

bash configure.sh -i ens33 -s 192.168.18.202 -d 192.168.18.204 -U 1000ms -D 1000ms -B 128kbit -b 512kbit -J 100ms -L 50%

检查配置:

bash check.sh -i ens33

删除配置:

bash delete.sh -i ens33

TODO

  • 目前上行和下行的带宽、延迟、丢包率等参数是一致的,可以考虑分别配置,以更加贴近真实网络环境
  • 无法模拟动态变化的网络环境(如突发拥塞、瞬时抖动等),将来可以考虑使用 tc 的高级功能模拟“带宽突发”和“网络抖动”模式等
  • [ ]

Other

如果需要更复杂的动态网络条件,可以考虑搭配专用的网络测试工具,如 Chaos Mesh 或 WANem。

如何观察测试结果

  1. 使用 iperf3:

    server 端:

    iperf3 -s

    client 端:

    udp:

    # 上行带宽
    iperf3 -c 192.168.18.230 -u -b 1M
    
    # 下行带宽(也可以测试上行带宽时从 server 端看到)
    iperf3 -c 192.168.18.230 -u -R -b 1M

    tcp:

    iperf3 -c 192.168.18.230
    iperf3 -c 192.168.18.230 -R

    注意:

    iperf3 客户端输出可能具有误导性,由于 iperf3 客户端统计的数据包括了尝试发送的流量(而非实际发送的流量),client 端可能会显示超过带宽限制的速率。这是 iperf3 的正常行为。可以重点关注 iperf3 server 的接收统计数据,因为它反映了实际带宽限制的效果。

  2. 使用 nc:

    server 端:

    nc -l -p 12345 > /dev/null

    client 端:

    dd if=/dev/zero bs=1M count=2 | nc 192.168.18.230 12345
  3. 使用 iptables 命令观察配置是否正确:

    sudo iptables -t mangle -L -v -n

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

0