如何限制 Linux 网络接口上的带宽?

Mar*_*ing 62 networking linux bandwidth

有没有办法限制linux中网卡的带宽?我希望能够模拟任意慢速的连接。

bor*_*yer 33

netem内核模块,通过iproute控制。

你需要用内核编译Netem:

Networking -->
   Networking Options -->
     QoS and/or fair queuing -->
        Network emulator
Run Code Online (Sandbox Code Playgroud)

加载 netem 模块后,iproute 的 tc 允许您执行以下操作:

tc qdisc add dev  tap0 root netem delay 50ms loss 50% 
Run Code Online (Sandbox Code Playgroud)

(50% 丢包,额外延迟 50 毫秒)


Ber*_*ard 28

客户端,对吧?

涓流应该做你想做的。如果您正在运行 Ubuntu(或 Debian,我认为),您可以使用 安装它sudo apt-get install trickle,然后运行它。trickle -s -d 10 -u 10 firefox(或者,我有一段时间没有使用它)会运行 Firefox,将其下载和上传速度限制为每秒 10 KB。

  • 涓流的工作原理是拦截对 TCP 传输的标准库函数中的链接调用 - 如果应用程序在编译时静态链接了这些函数,那么这将无法工作。 (7认同)

小智 17

我找到了一种方法来避免我的盒子使用 ubuntu 中名为“wondershaper”的工具占用网络上的所有可用带宽。我希望它也存在于其他 linux destro 中。我可以使用以下命令限制我的 linux 家用电脑可以消耗的带宽。

sudo wondershaper eth0 1000 200
Run Code Online (Sandbox Code Playgroud)

这将下载限制限制为 1000 KB,上传限制为 200 KB。有关更多信息/选项,请参阅 Wondershaper 的手册页。

  • 不过,wondershaper 似乎有一些数学问题。为了获得 1Mb/s 的上行/下行路径,我们最终使用 28096 而不是 1024。但不知道为什么会发生这种情况。 (4认同)

Tim*_*oft 8

NIST 制作了一个名为 NistNet 的网络模拟器。

http://snad.ncsl.nist.gov/nistnet/(链接似乎已失效)

http://cs.ecs.baylor.edu/~donahoo/tools/nistnet/

NistNet 可让您制作一个模拟您选择的通信链接的路由器。

对于最简单的操作,您将它放在一个盒子上,在两个网络之间有两个 NIC。

例如,我有一个必须通过卫星链接工作的应用程序。

数据可以通过 2Mbps 的链路传输,延迟很大。控制必须通过 128kbps 的链路,具有相同的延迟。

NistNet 帮助它以 128kbps 的速度运行。

使用 NistNet,我不仅可以模拟带宽,还可以模拟延迟,它还会为您丢弃数据包,模拟繁忙或不可靠的链接。

如果您想模拟任意连接,请不要只限制带宽,还要增加延迟。

也不要忘记对数据包进行分段。您可以在虚假链接上设置漂亮的小型 MTU。

IIRC 添加数据包抖动将让您了解是否可以处理乱序数据包。


小智 5

我个人过去曾为此使用过Wondershaper ,尽管它是为相反的用例而编写的 - 充分利用您的 ADSL 连接。

不过,我必须尝试这里提到的其他方法。