如何限制下载/上传带宽?

yev*_*ene 85 networking bandwidth

我如何限制下载/上传带宽:

  • 整个操作系统。
  • 一个网络接口。
  • 单一申请。

SMe*_*ric 73

虽然这是一个老问题,但我在寻找同一问题的答案时遇到了这个问题。操作系统和接口限制已在较早的答案中解决,因此这里提供了一种设置应用程序特定限制的方法。使用名为滴流的应用程序。也一样sudo apt-get install trickle。您可以通过运行来限制特定应用程序的上传/下载

trickle -u (upload limit in KB/s) -d (download limit in KB/s) application

这将启动具有指定限制的应用程序。您还可以指定“平滑”时间,以便在所需时间段内滴流样本,以防您的应用程序出现带宽消耗突发,并且只要平均值在您的规范范围内,您就希望允许突发。

  • 非常感谢!该解决方案非常适合基于每个应用程序控制带宽。请不要犹豫发布答案,即使问题已经存在多年。供将来参考:您可能会看到类似“涓流:无法到达涓流,独立工作:没有这样的文件或目录”这样的错误消息。您可以通过使用 `trickle -s` 在独立模式下执行 trickle 来消除此警告。 (16认同)
  • Trickle 将为您运行应用程序并强制执行限制。因此,您所要做的就是重新启动应用程序而不使用滴流命令。 (2认同)
  • 当尝试模拟慢速网络连接时,这正是我所需要的。 (2认同)

Res*_*ssu 43

限制单个接口很容易,但全局速率限制需要更复杂的规则,就像基于应用程序的规则一样。我并不是说它不能完成,但它需要对网络内部进行相当多的挖掘。

这里是一个快速如何在建立一个每个接口限制

如果你真的想设置基于应用程序的规则,你应该查看一些防火墙框架,比如shorewall,它具有配置整形的辅助功能。即使使用这些工具,也需要相当多的深谋远虑和测试才能将其落实到位。做这样的临时工作还不是那么容易。


小智 5

如果要限制特定 IP 地址的带宽,可以使用以下命令:

tc qdisc add dev eth1 root handle 1: htb default 12
tc class add dev eth1 parent 1: classid 1:10 htb rate 2500kbps
tc class add dev eth1 parent 1: classid 1:11 htb rate 2500kbps
tc class add dev eth1 parent 1: classid 1:12 htb rate 5000kbps

tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.2.105 flowid 1:10
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.2.106 flowid 1:11
Run Code Online (Sandbox Code Playgroud)

  • 这很复杂。一些#comments 会有很长的路要走。例如,您可以为 qdiscs、classids、htb 等添加链接或解释。 (6认同)