Wie kann ich die Download- / Upload-Bandbreite begrenzen?


77

Wie kann ich die Download- / Upload-Bandbreite begrenzen für:

  • Gesamtes Betriebssystem.
  • Eine Netzwerkschnittstelle.
  • Einzelanwendung.

Ich habe einen Fehler für das wondershaperProblem in Ubuntu 17.10 gemeldet, der möglicherweise dem ähnelt, was mit @Zeromatiker in Ubuntu 17.04 passiert
aguadopd

Antworten:


42

Die Beschränkung einer einzelnen Schnittstelle ist einfach, aber globale Ratenbeschränkungen erfordern komplexere Regeln wie anwendungsbasierte Regeln. Ich sage nicht, dass es nicht möglich ist, aber es erfordert einiges, sich mit den Interna des Netzwerks auseinanderzusetzen.

Hier ist eine kurze Anleitung zum Einrichten eines Grenzwerts pro Schnittstelle

Wenn Sie wirklich anwendungsbasierte Regeln einrichten möchten, sollten Sie sich mit einem Firewall-Framework wie Shorewall befassen , das Hilfsfunktionen zum Konfigurieren der Formgebung enthält. Selbst mit diesen Werkzeugen ist einiges an Umdenken und Testen erforderlich, um es in Position zu bringen. So etwas ad-hoc zu machen ist noch nicht so einfach.


wondershaper funktioniert nicht Ich weiß nicht warum (hat sogar wondershaper eth0 1000 1000 keine Internet-Bandbreite. Ich muss die gesamte eth0-Bandbreite begrenzen, nicht nur bestimmte Anwendungen. Wie kann ich das tun?
Arash

67

Obwohl dies eine alte Frage ist, bin ich auf diese gestoßen, als ich nach einer Antwort auf dieselbe Frage gesucht habe. Die Betriebssystem- und Schnittstellenbeschränkungen wurden bereits in einer früheren Antwort behandelt. Hier finden Sie eine Möglichkeit, anwendungsspezifische Beschränkungen festzulegen. Verwenden Sie eine Anwendung namens Rinnsal. Also tu es sudo apt-get install trickle. Sie können den Upload / Download für eine bestimmte App einschränken, indem Sie ausführen

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

Dadurch wird die Anwendung mit den angegebenen Grenzwerten gestartet. Sie können auch die "Glättungs" -Zeit angeben, damit Stichproben über den gewünschten Zeitraum hinweg übertragen werden, falls Ihre Anwendung einen hohen Bandbreitenverbrauch aufweist und Sie möchten, dass die Bursts zugelassen werden, solange der Durchschnitt innerhalb Ihrer Spezifikationen liegt.


14
Vielen Dank! Diese Lösung eignet sich perfekt zur Steuerung der Bandbreite pro Anwendung. Bitte zögern Sie nicht, eine Antwort zu schreiben, auch wenn die Frage Jahre alt ist. Zum späteren Nachschlagen: Möglicherweise wird eine Fehlermeldung wie angezeigt trickle: Could not reach trickled, working independently: No such file or directory. Sie können diese Warnung entfernen, indem Sie Trickle im Standalone-Modus mit ausführen trickle -s.
Glutanimate

Wie entferne ich das durch Rinnsal begrenzte Limit?
Anonymous Mouse

2
Trickle führt die Anwendung für Sie aus, wobei die Grenzwerte eingehalten werden. Sie müssen die Anwendung also nur neu starten, ohne den Trickle-Befehl zu verwenden.
SMeznaric

1
Vielen Dank für diese Antwort, es war genau das, wonach ich gesucht habe
Ali

1
Genau das, was ich brauchte, um eine langsame Netzwerkverbindung zu simulieren.
Ethan Kaminski

5

Wenn Sie die Bandbreite für eine bestimmte IP-Adresse begrenzen möchten, können Sie dies verwenden:

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

4
das war ziemlich verworren. Ein paar #Kommentare würden viel bewirken. Sie könnten zum Beispiel Links oder Erklärungen für qdiscs, classids, htb, etc.
hinzufügen

Standardmäßig ist also alles auf 5000 KBit / s begrenzt, sofern es nicht in eine andere Warteschlange gefiltert wird. Was ist, wenn wir nicht alles begrenzen wollen ?
Ken Sharp
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.