21
2024
11
20:25:08

linux 网卡限速工具之WonderShaper

  • 什么是WonderShaper

  • 如何安装WonderShaper

  • WonderShaper使用帮助

  • WonderShaper使用示例

    • 查看网卡状态

    • 限制网卡速度(单位Kbps)

    • 取消限速

  • WonderShaper在测试中的应用

  • 网速单位转换

  • 总结

1.什么是WonderShaper

WonderShaper是用来对特定网卡进行快速限速的工具,它实际是对linux的tc命令进行封装后的shell脚本,所以使用成本比tc更低,更容易上手,以下配合测速工具speedtest一起使用

2.如何安装WonderShaper

#直接拉取WonderShaper,开箱即用
git clone https://github.com/magnific0/wondershaper.git

root@****-5491:/home/soft/wondershaper# ./wondershaper -v
Version 1.4.1
root@****-5491:/home/soft/wondershaper# 

#网速测试工具speedtest安装(Ubuntu)
apt install speedtest-cli
--yum install speedtest-cli (centos)

Obtaining wondershaper

It is recommended to clone the GitHub repository of wondershaper such that you can pull in new updates at any time (if available). Open a new terminal and clone the repository using

git clone https://github.com/magnific0/wondershaper.git

This will clone wondershaper in your current folder in a new folder named wondershaper. Now enter the folder using

cd wondershaper

Using wondershaper

You can run wondershaper (as any user with sufficient permissions) without installation and stop following the instructions at this point. Show the wondershaper usage instructions by typing

./wondershaper -h

The program details all available options on how to use wondershaper. Next is to pick an interface that you want to shape. You can see all available interfaces by typing

ip addr show

Note that on older systems this command might not be available. In this case you should run ifconfig instead.

Identify the network interface that you want to shape. The names differ per system.

In the following example a wireless interface is limited to an upload of 4Mbps and download of 8Mbps.

./wondershaper -a wlp4s0 -u 4096 -d 8192

If you get messages telling you that RTNETLINK answers: Operation not permitted your user account does not have sufficient privileges. In that case try:

sudo ./wondershaper -a wlp4s0 -u 4096 -d 8192

System installation (optional)

A makefile file provided for easy installation. The default location for wondershaper is in /usr/bin. If you want to install to your system you can run:

sudo make install

You can verify that wondershaper was installed correctly by entering:

which wondershaper

This should return /usr/bin/wondershaper. You can follow the same instructions as explained in the "Using wondershaper" section, but instead of running the local version of the program you now run the system version by removing the ./ from the beginning of each command. For example to show the help instructions again run:

wondershaper -h

Persistent usage of wondershaper (optional)

Instead of using the commandline options to set the rates and interface as previously shown, it is necessary to set these parameters in the wondershaper.conf configuration file. You can edit this file using your favourite text editor (vim in the example below) as such:

sudo vim /etc/systemd/wondershaper.conf

To make sure wondershaper is reactivated on reboot a systemd service file is provided. First enable wondershaper as a systemd service using:

sudo systemctl enable --now wondershaper.service

This way wondershaper is activated with your setting upon reboot.

Usage

    wondershaper [-hcs] [-a <adapter>] [-d <rate>] [-u <rate>]

The following command line options are allowed:

  • -h Display help

  • -a <adapter> Set the adapter

  • -d <rate> Set maximum download rate (in Kbps) and/or

  • -u <rate> Set maximum upload rate (in Kbps)

  • -p Use the presets in /etc/systemd/wondershaper.conf

  • -f <file> Use alternative preset file

  • -c Clear the limits from adapter

  • -s Show the current status of adapter

The different modes are:

    wondershaper -a <adapter> -d <rate> -u <rate>

    wondershaper -c -a <adapter>

    wondershaper -s -a <adapter>

Some examples:

    wondershaper -a eth0 -d 1024 -u 512

    wondershaper -a eth1 -d 94000 -u 94000  # could be used on a 100Mbps link

    wondershaper -a eth1 -u 94000  # only limit upload

    wondershaper -c -a eth0

    wondershaper -p -f foo.conf




3.WonderShaper使用帮助

root@****-5491:/home/soft/wondershaper# ./wondershaper -h
USAGE: ./wondershaper [-hcs] [-a <adapter>] [-d <rate>] [-u <rate>]

Limit the bandwidth of an adapter

OPTIONS:
   -h           Show this message 【帮助信息】
   -a <adapter> Set the adapter  【指定网卡接口】
   -d <rate>    Set maximum download rate (in Kbps) and/or 【限制下载速度(Kbps)】
   -u <rate>    Set maximum upload rate (in Kbps)   【限制上传速度(Kbps)】
   -p           Use presets in "/etc/systemd/wondershaper.conf"
   -f <file>    Use alternative preset file
   -c           Clear the limits from adapter 【清除指定网卡规则,用于取消限速】
   -s           Show the current status of adapter 【显示当前网卡的状态】
   -v           Show the current version  【显示当前版本】

   Configure HIPRIODST in "/etc/systemd/wondershaper.conf" for hosts
   requiring high priority i.e. in case ssh uses dport 443.

MODES:
   wondershaper -a <adapter> -d <rate> -u <rate>
   wondershaper -c -a <adapter>
   wondershaper -s -a <adapter>

EXAMPLES: 【使用示例】
   wondershaper -a eth0 -d 1024 -u 512  【设置网卡eth0的上行速度为512kbps,下行速度为1024kbps】
   wondershaper -a eth0 -u 512 【只设置上行速度为512kbps】
   wondershaper -c -a eth0 【清除网卡eth0的规则】
   wondershaper -p -f foo.conf 【设置指定的配置文件】

root@****-5491:/home/soft/wondershaper#

4.WonderShaper使用示例

4.1查看网卡状态

root@****-5491:/home/soft/wondershaper# ifconfig eno1
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.5.103  netmask 255.255.255.0  broadcast 192.168.5.255
        inet6 fe80::2c93:21f9:1931:304  prefixlen 64  scopeid 0x20<link>
        ether c8:f7:50:7e:50:48  txqueuelen 1000  (Ethernet)
        RX packets 7748809  bytes 1034513376 (1.0 GB)
        RX errors 0  dropped 439  overruns 0  frame 0
        TX packets 15528838  bytes 4784318169 (4.7 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  memory 0x91500000-91520000 

root@****-5491:/home/soft/wondershaper# ./wondershaper -s -a eno1
qdisc fq_codel 0: root refcnt 2 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms memory_limit 32Mb ecn 
 Sent 4528052159 bytes 14890189 pkt (dropped 0, overlimits 0 requeues 4224) 
 backlog 0b 0p requeues 4224
  maxpacket 66616 drop_overlimit 0 new_flow_count 35953 ecn_mark 0
  new_flows_len 0 old_flows_len 0

--测试网速
root@****-5491:/home/soft/wondershaper# speedtest
Retrieving speedtest.net configuration...
Testing from China Telecom (120.36.98.11)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by Fuzhou China Mobile,Fujian (Fuzhou) [589.19 km]: 14.449 ms
Testing download speed................................................................................
-- 下载网速是171.43 Mbit/s,
Download: 171.43 Mbit/s
Testing upload speed......................................................................................................
-- 上传网速是4.15 Mbit/s
Upload: 4.15 Mbit/s

4.2限制网卡速度(单位Kbps)

-- 下行2048kbps=2 Mbit/s,上行 1024kbps=1 Mbit/s
root@****-5491:/home/soft/wondershaper# ./wondershaper -a eno1 -d 2048 -u 1024

--测试网速
root@****-5491:/home/soft/wondershaper# speedtest
Retrieving speedtest.net configuration...
Testing from China Telecom (120.36.98.11)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by Far EasTone Telecom (Miaoli City) [722.10 km]: 174.383 ms
Testing download speed................................................................................
-- 下行速度
Download: 1.80 Mbit/s
Testing upload speed......................................................................................................
--上行速度
Upload: 1.28 Mbit/s
root@****-5491:/home/soft/wondershaper#

4.3取消限速

--取消限速
root@****-5491:/home/soft/wondershaper# ./wondershaper -c -a eno1

-- 查看网卡状态
root@****-5491:/home/soft/wondershaper# ./wondershaper -s -a eno1
qdisc fq_codel 0: root refcnt 2 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms memory_limit 32Mb ecn 
 Sent 123022 bytes 471 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0

-- 测试网速
root@****-5491:/home/soft/wondershaper# speedtest
Retrieving speedtest.net configuration...
Testing from China Telecom (120.36.98.11)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by Far EasTone Telecom (Miaoli City) [722.10 km]: 173.886 ms
Testing download speed................................................................................
Download: 11.29 Mbit/s
Testing upload speed......................................................................................................
Upload: 2.93 Mbit/s
root@****-5491:/home/soft/wondershaper#

5.WonderShaper在测试中的应用

  • 测试项目:某内部数据库迁移工具

  • 测试目的:数据迁移中,对目标端进行限速,当取消限速后,传输速度可以恢复

  • 测试步骤:起迁移进程,在目标端服务器上用WonderShaper工具进行限速:

      -- 只限制下行速度
      [#22#root@**** ~/wondershaper 14:49:32]22  ./wondershaper -a enp0s3  -d 100
  • 测试结果:

限速后,写目标库单位写入行数和单位写入字节数都急剧下降,如下图:



取消限速,恢复网络后,传输速率慢慢恢复:





6.网速单位转换

1KB/s = 8kbps = 8kb/s
比如一般100M的宽带,实际是100Mbps=(100/8) MB/s=12.5 MB/s

7.总结

使用WonderShaper对网卡进行限速,在测试时可以针对性的指定网卡,指定上传速度或者指定下载速度,在测试中上传和下载速度是互不影响的,可以只限制一方;且WonderShaper工具操作简单好入手,是个不错的工具。




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/8559.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: