Drosseln Sie die Netzwerkbandbreite pro Anwendung in Mac OS X

37

Ich stelle fest, dass iTunes meine gesamte Bandbreite in Anspruch zu nehmen scheint und mit anderen Anwendungen, die beim Herunterladen das Internet verwenden, nicht gut funktioniert. Tatsächlich wird beim Surfen im iTunes Store beim Herunterladen großer oder vieler Dateien (Podcasts, Fernsehsendungen, große Apps usw.) nicht einmal genügend Bandbreite zur Verfügung gestellt.

Es geht mir nicht darum, alle meine Downloads so schnell wie möglich zu erhalten. Sie haben eine sehr niedrige Priorität. Ich möchte dies lieber nicht tun, während ich wach bin. Ich bin im Bett und habe es schon vergessen.

Gibt es eine Anwendung oder ein Tool über das Terminal, um die Download-Bandbreite zu begrenzen, die iTunes erhält, ohne Webbrowser oder andere Anwendungen zu behindern?

FOSS / GPL-Software ist vorzuziehen, aber auch Bezahlsoftware ist möglicherweise zulässig.

dotHTM
quelle
1
Network Link Conditioner ist sehr gut, um die Bandbreite für alle Apps zu begrenzen apple.stackexchange.com/questions/164959/…
Khaled Annajar
Diese Frage ist für meinen speziellen Gebrauch weitgehend hinfällig geworden. Ich lade selten regelmäßig Inhalte in iTunes herunter (Podcasts werden jetzt nur mit einer Drittanbieter-App auf dem iPhone, AppleTV für iTunes-Videokäufe und überhaupt nicht mit dem Computer synchronisiert).
dotHTM

Antworten:

9

GUI:

CLI (keine portspezifische Filterung, kann aber angepasst werden):

Diese Tools basieren auf Ports oder Portbereichen als Filterkriterium. Wenn Sie nicht wissen, welche Ports Ihre Anwendung verwendet, können Sie die Dokumentation der Anwendung überprüfen oder diese verwenden, lsofwährend die Anwendung ausgeführt wird, um die Portnummern anzuzeigen.

sudo lsof -i -P

Die meisten oder alle Tools verwenden ipfw, das offiziell zugunsten von pf veraltet ist. Sie sind sich also nicht sicher, ob diese Lösungen unter OS X 10.9 und höher funktionieren.

Stefan Schmidt
quelle
5

Alte Frage, aber ich hatte gerade ein ähnliches Problem und dachte, ich würde antworten.

Das Problem liegt wahrscheinlich an der Traffic-Shaping-Funktion Ihres Internetdienstanbieters. Sie priorisieren den Datenverkehr mit aggressiven Prioritäten für bekannte Inhaltsanbieter, um den Kunden einen besseren Streaming-Service zu bieten. Ich würde behaupten, dass sie in einigen Fällen etwas zu weit gegangen sind - ich habe gerade ein ähnliches Problem diagnostiziert, bei dem ein iCloud-Foto-Upload im Hintergrund Ping-Zeiten von mehr als 45.000 ms verursachte.

Um das Problem zu beheben, können Sie einfach die Gesamtbandbreite reduzieren, die Ihr Computer benötigt, um zu verhindern, dass die Datenverkehrssteuerung des Internetdienstanbieters die Bandbreite aller anderen Anwendungen vollständig stört. Ironischerweise wird dadurch die Leistung beim Browsen auf Ihrem eigenen Computer verbessert, und natürlich auch die Leistung für andere Computer in Ihrem Netzwerk. Wenn Sie beispielsweise eine Downstream-Obergrenze von 15 Mbit / s haben, können Sie Ihren Computer auf 12 Mbit / s beschränken, und der ISP-Algorithmus erkennt nicht mehr die Notwendigkeit, Ihren Datenverkehr so ​​aggressiv zu gestalten:

sudo ipfw pipe 1 config bw 12Mbits/s
sudo ipfw add 1 pipe 1 tcp from any to me

In meinem Fall war die Upstream-Bandbreite (von meinem ISP auf 1 Mbit / s begrenzt) der begrenzende Faktor. Daher habe ich Folgendes ausgeführt, um mein Problem zu lösen:

sudo ipfw pipe 1 config bw 768Kbits/s
sudo ipfw add 1 pipe 1 tcp from me to any

Beachten Sie, dass diese Befehle nur bis zu einem Neustart wirksam sind. Um die Regel abzubrechen, gehen Sie wie folgt vor:

ipfw delete 1
John Mileham
quelle
Ich finde die FreeBSD-Manpage für ipfw, aber laut Wikipedia wurde ipfw in OS X von 10.4 bis 10.5 de-betont. Ich finde ipfw in meiner heutigen Installation von 10.10 nicht und sowohl Homebrew als auch MacPorts haben keine aktiv entwickelten Installationen für ipfw.
dotHTM
2
ipfwwurde in os x eingestellt, aber es gibtpf
Chris
4

Wie wäre es mit Wasserdach ? Es ist ein einfaches Frontend für IPFW. (Und Open Source.)

Ben Chun
quelle
4

Benutze IceFloor bei [Mountain] Lion

GJ.
quelle
Ich stimme dieser Antwort ab, nachdem ich festgestellt habe, dass IceFloor eher protokollzentriert als app-zentriert ist. Wenn ich also nur eine bestimmte App einschränken möchte, ist es schwierig.
Knocte
Hochgestuft, weil ich bei der Erkundung von IceFloor Vallum gefunden habe, mit dem ich den Netzwerkzugriff per App sperren kann.
Skplunkerin
2

Dies ist ein wirklich perverser Gedanke, aber Sie können möglicherweise die in Mac OS X integrierten Funktionen "ipfw" und "dummynet" zum Schreiben von Regeln verwenden. Weitere Informationen zu diesen Tools finden Sie in den Manpages.

Spiff
quelle
Ein Video von jemandem, der genau das unter OSX tut: youtube.com/watch?v=VgwR230coOw
Prof. Falken
2

In Bezug auf die aktuellen Entwicklungen für OS X 10.10ist die ipfwüblicherweise genannte ausführbare Datei nicht mehr verfügbar. Es gibt jedoch eine pfausführbare Datei, die ähnliche Firewall-Konfigurationen verarbeiten kann.

Es gibt eine GUI-Oberfläche namens "Murus" ( http://www.murusfirewall.com ), die Sie zur Konfiguration verwenden können pf. Soweit ich weiß, wird auch die Bandbreitenbeschränkung (über die Benutzeroberfläche) aktiv unterstützt.

[BEARBEITEN]

Falls jemand nicht ohne gehen ipfwkann, könnten Sie versuchen, es selbst zu kompilieren. Der Quellcode (von FreeBSD) ist hier verfügbar: http://www.freebsd.org/cgi/cvsweb.cgi/src/sbin/ipfw/

Apple veröffentlicht auch den Quellcode der verwendeten Open Source-Projekte (d). ipfwfinden Sie hier: http://www.opensource.apple.com/source/network_cmds/network_cmds-329.2.2/

Chris
quelle
1
Ich konnte Murus erfolgreich so konfigurieren, dass Skype 8 unter OS X 10.14 Mojave unter Verwendung der folgenden Anweisungen gedrosselt wird: murusfirewall.com/forum/viewtopic.php?t=428
Jon Schneider
1

Rinnsal ist was du suchst.

Die einzigen Probleme sind, dass es keine ausführbaren Dateien unterstützt, die kqueue verwenden, und dass es keine statisch verknüpften ausführbaren Dateien unterstützt. iTunes sollte in Ordnung sein.

John T
quelle
1
Ich konnte es nicht schaffen, Rinnsal 1.0.6 oder 1.0.7 zu erstellen. Nach dem Ausführen von ./configure erhalte ich die Fehlermeldung, dass libevent nicht gefunden werden kann. Ich habe libevent über MacPorts installiert und den gleichen Fehler erhalten, als ich es erneut versuchte.
dotHTM
@Kio Versionen> 1.06 bauen aufgrund von Problemen mit dem Aufruf nicht auf poll(). Ältere sollten jedoch funktionieren.
John T
4
Ich habe Trickle 1.0.5 heruntergeladen, "$ sudo ./configure" ausgeführt und wie zuvor die folgende Fehlermeldung erhalten: "configure: error: libevent not found". Ich habe es überprüft und MacPorts hat libevent installiert. Außerdem mag ich keine Software, die seit Jahren nicht mehr aktualisiert wurde.
dotHTM
1

http://github.com/zquestz/throttled Vielleicht suchen Sie danach, wenn Sie es noch nicht gefunden haben.

Robbie
quelle
Dies ist mittlerweile veraltet und nutzt ipfw, was nicht mehr verfügbar ist.
Chris
0

Ich habe kürzlich festgestellt (und teste noch), dass Vallum die Kontrolle über meine Apps hat:

Es ist eine macOS Application Firewall, mit der Sie einschränken können, welche Apps das Internet nutzen dürfen. Bisher ist es wirklich gut gelungen, ich habe gerade ein Standardprofil erstellt , das alle gewünschten Zugriffsmöglichkeiten bietet, und ein mobiles Hotspot-Profil , mit dem ich unterwegs mehr Apps einschränken kann.


Update: Ich konnte die Bandbreite für Apps mit Vallum nicht "drosseln", sondern nur verschiedene Profile einrichten , bei denen ich mehr / weniger Apps einschränke.

Skplunkerin
quelle
3
scheint überhaupt keine Drosselung zuzulassen
GJ.
@ GJ. Es stimmt, ich konnte diese Fähigkeit auch nicht erkennen. Bisher kann ich einer App nur Netzwerkzugriff gewähren oder nicht. Ich habe verschiedene Profile als "Drosseln" für meine Problemumgehung eingerichtet.
Skplunkerin
0

Die beste Möglichkeit, die Bandbreite unter macOS zu drosseln, ist die Verwendung von Dummynet, das in den macOS-Kernel integriert ist und mit dem Paketfilter pf zusammenarbeitet. Meiner Meinung nach besteht die einzige Möglichkeit, die Bandbreite pro Prozess effektiv zu optimieren, darin, zu ermitteln, welche lokalen Ports durch den Prozess gebunden sind, und anschließend die entsprechenden PF-Dummynet-Regeln zu erstellen. Soweit ich weiß, ist die einzige MacOS-App, die diese Option anbietet, Scudo (ich bin der Entwickler von Scudo, Vallum und Murus). Scudo 1.0 Beta 3 ist derzeit kostenlos verfügbar. Weitere Informationen zur prozessbasierten Bandbreitenoptimierung von Scudo finden Sie hier: http://www.murusfirewall.com/forum/viewtopic.php?f=2&t=1919&p=3281#p3281

Hany El Imam
quelle
Ich habe es versucht und es scheint zu funktionieren. Dies ist jetzt in Beta 6 (Beta 3 wird nicht mehr funktionieren) - murusfirewall.com/forum/viewtopic.php?f=2&t=1949 Ich mag den Netzwerkmonitor, mit dem Sie die Firewall erweitern und die Bandbreite drosseln können.
f01,