Beschränken der Upload-Bandbreite in Mac OS X Yosemite (10.10)

5053
psmith

Ich habe ADSL-Internet, und wenn eine Anwendung mit voller Geschwindigkeit ins Internet hochgeladen wird (z. B. Skype oder Chrome während des Datei-Uploads), wird die Download-Bandbreite sehr langsam. Das bedeutet, dass ich während des Uploads die Webseiten nicht praktisch durchsuchen kann und selbst das Pingen 8.8.8.8dauert 2-3 Sekunden. Normalerweise dauert das weniger als 0,06 Sekunden.

In Mac OS X Mavericks (10.9) und früher benutzte ich gedrosselt den ausgehenden Datenverkehr zu begrenzen, so dass das Internet nutzbar während Uploads war.

Throttled verwendet ipfw für Throttling, das von Yosemite (10.10) entfernt wurde. Die empfohlene Alternative ist pf, aber der Mac OS X-Kernel bietet keine ALTQ-Unterstützung, was die Verkehrsgestaltung aktivieren würde (da ich es versucht habe, werden alle altq-Befehle einfach ignoriert).

Ich habe auch die Network Link Conditioner- App ausprobiert, die ausgehenden Pakete wird jedoch nicht ordnungsgemäß gedrosselt, sodass das Internet während des Uploads weiterhin unbrauchbar ist. Die durchschnittliche ausgehende Bandbreite ist begrenzt, schwankt / oszilliert jedoch mit einigen Sekunden.

Wie kann ich also die ausgehende Bandbreite begrenzen? Oder wie kann ich zumindest die HTTP-Verkehrspriorität erhöhen? Kann ich ipfwirgendwie installieren ? Irgendeine andere Idee?

Update : Die Konfiguration, die für mich am besten funktioniert, ist, HTTP / HTTPS / SSH unbegrenzt zu machen und die Uploadgeschwindigkeit für alles andere zu begrenzen. Dies macht das Internet nutzbar, wenn sowohl das Cloud-Backup als auch der Torrent gleichzeitig hochgeladen werden. Hier ist das Skript:

#!/bin/bash  # Reset dummynet to default config dnctl -f flush  pfctl -F all  # Compose an addendum to the default config; creates a new anchor (cat /etc/pf.conf && echo 'dummynet-anchor "my_anchor"' && echo 'anchor "my_anchor"') | pfctl -q -f -  # Configure the new anchor cat <<EOF | pfctl -q -a my_anchor -f - no dummynet quick on lo0 all dummynet out all pipe 1 dummynet out proto icmp all pipe 2 dummynet out proto tcp to any port 443 pipe 2 dummynet out proto tcp to any port 80 pipe 2 dummynet out proto tcp to any port 22 pipe 2 EOF  # Create the dummynet queue dnctl pipe 1 config bw 30Kbyte/s queue 50 dnctl pipe 2 config queue 50  # Activate PF pfctl -E 

Um zu überprüfen, ob dnctl ordnungsgemäß konfiguriert ist, führen Sie den Vorgang aus sudo dnctl list. Sie sollten die 2 Warteschlangen sehen, die erste ist begrenzt, die zweite ist unbegrenzt:

$ sudo dnctl list 00001: 240.000 Kbit/s 0 ms 50 sl. 1 queues (1 buckets) droptail mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000 BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000 BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp 0 udp 192.168.1.XX/XXX XX.XX.XX.XX/XXX 1372 1517617 6 8010 96 00002: unlimited 0 ms 50 sl. 1 queues (1 buckets) droptail mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000 BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000 BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp 0 tcp 192.168.1.XX/XXX XX.XX.XX.XX/XXX 27 4557 0 0 0 
5
Auf Yosemite können Sie Icefloor ... Gibs verwenden vor 9 Jahren 0
Danke für den Tipp @gibs, aber von der [Website] (http://www.hanynet.com/icefloor/): `IceFloor läuft auf OS X 10.10 Yosemite mit eingeschränkten Funktionalitäten. Die Bandbreitenverwaltung wird nicht unterstützt. " psmith vor 9 Jahren 0

1 Antwort auf die Frage

2
Matt Simerson

Mit der neuen Foto-App bin ich genau auf dieses Problem gestoßen. Nach der Installation photolibrarydlädt eine App alle Fotos im Hintergrund hoch, wodurch die von Ihnen genannten Netzwerkstauprobleme auftreten. Ich habe auch den Network Link Conditioner installiert und ein Upload-Limit von 256 Kbit / s festgelegt.

Zuerst hat es nicht funktioniert. Der Grund war einfach: Beim Upload handelt es sich um eine TCP-Verbindung (HTTPS an Port 443). Nachdem ich NLC aktiviert hatte, musste ich zuerst die Verbindung trennen (ich habe das WLAN nur für eine Sekunde ausgeschaltet). Danach wurden die Uploads unter der neuen NLC-Regel fortgesetzt und ich kann mein Internet gleichzeitig nutzen.

Um weitere Informationen zu erhalten, werfen Sie einen Blick auf Ihre PF-Regeln vor und nach der Aktivierung von NLC. Beachten Sie, dass Sie, wenn NLC aktiviert ist, eine Dummynet-PF-Regel haben ?! Das ist richtig, anstatt ALTQ zu unterstützen, scheint es, als hätte PF die Arbeit mit Dummynet-Systemen verbessert. Ich habe in meinem Blog etwas mehr über PF auf Mac OS X gepostet .

UPDATE: NLC wird nicht benötigt. Dummynet-Pipes und Warteschlangen können direkt mit erstellt werden dnctl. Lesen Sie die dazugehörige Manpage für detaillierte Anweisungen und Anwendungsbeispiele pf.

Ich habe meine Antwort mit `dnctl` aktualisiert, einem CLI-Tool, das genau das tut, was Sie wollen, @psmith. Matt Simerson vor 9 Jahren 0
Ich habe ein Upgrade auf El Capitan durchgeführt und tatsächlich scheint das `dnctl` zu funktionieren. Ich habe hier eine funktionierende Konfiguration gefunden: https://www.reddit.com/r/osx/comments/3g7dim/limiting_bandwidth_per_application/ psmith vor 8 Jahren 0