Bandwidth jaringan throttle per aplikasi di Mac OS X

37

Saya perhatikan bahwa iTunes tampaknya menyedot semua bandwidth saya dan tidak bermain bagus dengan aplikasi lain yang menggunakan web saat sedang mengunduh. Bahkan, ia bahkan tidak memberikan bandwidth yang cukup saat menjelajah iTunes Store saat mengunduh file besar atau banyak (podcast, acara TV, aplikasi besar, dll).

Saya tidak khawatir dengan mendapatkan semua unduhan saya sesegera mungkin, mereka benar-benar prioritas rendah, dan saya lebih suka tidak perlu melakukan ini ketika saya bangun, tetapi saya tidak bisa menekan tombol refresh jika saya ' Saya di tempat tidur dan sudah lupa itu.

Apakah ada aplikasi atau alat melalui Terminal untuk membatasi bandwidth unduhan yang didapat iTunes tanpa juga menghalangi browser web atau aplikasi lain?

Perangkat lunak FOSS / GPL lebih disukai, tetapi perangkat lunak berbayar mungkin juga dapat diterima.

dotHTM
sumber
1
Network Link Conditioner sangat baik untuk membatasi bandwidth untuk semua aplikasi apple.stackexchange.com/questions/164959/…
Khaled Annajar
Pertanyaan ini sebagian besar sudah usang untuk penggunaan khusus saya. Saya jarang mengunduh konten di iTunes secara teratur (podcast sekarang menggunakan aplikasi pihak ketiga di iPhone saja, AppleTV untuk pembelian video iTunes, dan tidak menyinkronkan aplikasi sama sekali ke komputer).
dotHTM

Jawaban:

9

GUI:

CLI (tidak ada penyaringan khusus port tetapi dapat diadaptasi):

Alat-alat ini bergantung pada port atau rentang port sebagai kriteria filter. Jika Anda tidak tahu port apa yang digunakan aplikasi Anda, Anda dapat memeriksa dokumentasinya atau menggunakannya lsofsaat aplikasi sedang berjalan untuk mengungkapkan nomor port.

sudo lsof -i -P

Sebagian besar atau semua alat menggunakan ipfw yang secara resmi ditinggalkan demi pf , jadi tidak yakin apakah solusi ini akan bekerja pada OS X 10.9 dan seterusnya.

Stefan Schmidt
sumber
5

Pertanyaan lama, tapi saya baru saja mengalami masalah yang sama jadi saya pikir saya akan menjawab.

Masalahnya mungkin sebenarnya karena pembentukan traffic di ISP Anda. Mereka secara agresif memprioritaskan lalu lintas ke penyedia konten yang dikenal dalam upaya untuk menyediakan layanan streaming yang lebih baik kepada pelanggan. Saya berpendapat mereka telah bertindak terlalu jauh dalam beberapa kasus - saya baru saja mendiagnosis masalah yang sama di mana unggahan foto iCloud latar belakang menyebabkan waktu ping lebih dari 45000 ms.

Untuk mengatasi masalah ini, Anda cukup mengurangi jumlah bandwidth total yang akan digunakan komputer Anda untuk mencegah pembentukan traffic ISP dari merampok bandwidth sepenuhnya dari semua aplikasi lain. Ironisnya, ini akan meningkatkan kinerja penelusuran di komputer Anda sendiri, di samping jelas meningkatkan kinerja untuk komputer lain di jaringan Anda. Jika misalnya Anda memiliki batas bawah 15Mbps, Anda dapat membatasi komputer Anda hanya menggunakan 12Mbps, dan algoritma ISP tidak akan lagi melihat kebutuhan untuk membentuk lalu lintas Anda secara agresif:

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

Dalam kasus saya, itu adalah bandwidth upstream (dibatasi pada 1Mbps oleh ISP saya) yang merupakan faktor pembatas, jadi saya menjalankan yang berikut, yang memecahkan masalah saya:

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

Perhatikan bahwa perintah ini hanya akan efektif sampai restart, tetapi untuk membatalkan aturan, lakukan saja hal berikut:

ipfw delete 1
John Mileham
sumber
Saya menemukan halaman manual FreeBSD untuk ipfw, tetapi menurut Wikipedia, ipfw tidak ditekankan dalam OS X mulai dari 10.4 hingga 10.5. Saya tidak menemukan ipfw pada instalasi saya 10,10 hari ini, dan baik Homebrew dan MacPorts datang tanpa instalasi yang dikembangkan secara aktif untuk ipfw.
dotHTM
2
ipfwdihentikan di os x, tetapi adapf
Chris
4

Bagaimana dengan waterroof ? Ini ujung depan yang mudah untuk IPFW. (Dan open source.)

Ben Chun
sumber
4

Gunakan IceFloor di [Gunung] Lion

GJ.
sumber
Saya menurunkan jawaban ini setelah menemukan bahwa IceFloor lebih berpusat pada protokol daripada berpusat pada aplikasi. Jadi jika saya ingin membatasi hanya aplikasi tertentu itu sulit.
knocte
Terpilih karena menjelajahi IceFloor membuat saya menemukan Vallum, yang memungkinkan saya memblokir akses jaringan per aplikasi.
skplunkerin
2

Ini adalah pemikiran yang sangat jahat, tetapi Anda mungkin dapat menggunakan ipfw dan dummynet bawaan Mac OS X untuk menulis aturan untuk melakukan ini. Lihat halaman manual untuk alat-alat itu.

Spiff
sumber
Sebuah video seseorang melakukan hal itu di OSX: youtube.com/watch?v=VgwR230coOw
Prof. Falken mendukung Monica
2

Sehubungan dengan perkembangan saat ini untuk OS X 10.10, ipfwexecutable yang biasa disebut, tidak lagi tersedia. Namun, ada pfyang dapat dieksekusi, yang dapat menangani konfigurasi firewall serupa.

Ada antarmuka GUI yang disebut "Murus" ( http://www.murusfirewall.com ), yang dapat Anda gunakan untuk mengonfigurasi pf. Sejauh yang saya mengerti, itu juga secara aktif mendukung pembatasan bandwidth (dari UI).

[EDIT]

Jika seseorang tidak dapat pergi tanpanya ipfw, Anda dapat mencoba untuk mengkompilasinya sendiri. Kode sumber (dari FreeBSD) tersedia di sini: http://www.freebsd.org/cgi/cvsweb.cgi/src/sbin/ipfw/

Apple juga menerbitkan kode sumber proyek sumber terbuka yang digunakannya (d). ipfwdapat ditemukan di sini: http://www.opensource.apple.com/source/network_cmds/network_cmds-329.2.2/

Chris
sumber
1
Saya berhasil mengonfigurasi Murus untuk membatasi Skype 8 pada OS X 10.14 Mojave menggunakan instruksi di sini: murusfirewall.com/forum/viewtopic.php?t=428
Jon Schneider
1

menetes adalah apa yang Anda cari.

Satu-satunya masalah adalah bahwa itu tidak mendukung executable menggunakan kqueue, dan tidak mendukung executable yang terhubung secara statis. iTunes seharusnya baik-baik saja.

John T
sumber
1
Saya tidak bisa membuat tetesan 1.0.6 atau 1.0.7 untuk membangun. Setelah menjalankan ./configure saya mendapatkan pesan kesalahan yang mengatakan bahwa libevent tidak dapat ditemukan. Saya menginstal libevent melalui MacPorts dan mendapatkan kesalahan yang sama ketika saya mencoba lagi.
dotHTM
@Kio versi> 1.06 tidak dibuat karena ada masalah dengan panggilan ke poll(). Yang lebih tua harusnya bekerja.
John T
4
Saya mengunduh trickle 1.0.5, menjalankan "$ sudo ./configure" dan mendapatkan kesalahan berikut seperti sebelumnya: "configure: error: libevent not found". Saya memeriksa, dan MacPorts telah menginstal libevent. Selain itu, saya tidak menyukai perangkat lunak yang belum diperbarui selama bertahun-tahun.
dotHTM
1

http://github.com/zquestz/throttled ini mungkin yang Anda cari jika Anda belum menemukannya.

Robbie
sumber
Ini sudah usang sekarang dan menggunakan ipfw, yang tidak lagi tersedia.
Chris
0

Baru-baru ini saya menemukan (dan masih dalam tahap uji coba) Vallum untuk memiliki kendali atas aplikasi saya:

Ini adalah Firewall Aplikasi macOS yang memungkinkan Anda membatasi aplikasi apa saja yang dapat menggunakan internet. Sejauh ini benar-benar licin, saya baru saja membuat Profil Default yang memungkinkan semua yang saya ingin memiliki akses, dan Profil Hotspot Seluler yang membatasi lebih banyak aplikasi ketika saya sedang bepergian.


Pembaruan: Saya belum dapat " membatasi " bandwidth untuk aplikasi menggunakan Vallum , hanya menyiapkan profil yang berbeda di mana saya membatasi aplikasi lebih / kurang.

skplunkerin
sumber
3
sepertinya tidak mengizinkan pelambatan sama sekali
GJ.
@ GJ. benar, saya belum bisa melihat kemampuan itu ... sejauh ini saya hanya bisa membiarkan aplikasi memiliki akses jaringan, atau tidak. Saya telah menyiapkan profil yang berbeda sebagai "penghambat" untuk penyelesaian masalah ini.
skplunkerin
0

Cara terbaik untuk membatasi bandwidth pada macOS adalah menggunakan Dummynet, yang dibangun ke dalam kernel macOS dan bekerja dengan filter paket pf. Menurut pendapat saya satu-satunya cara untuk mengatur bandwidth secara efektif berdasarkan per proses adalah mengidentifikasi port lokal mana yang terikat oleh proses dan kemudian membuat aturan dummynet pf yang sesuai. Sejauh yang saya tahu satu-satunya aplikasi macOS yang menawarkan opsi ini adalah Scudo (saya adalah pengembang Scudo, Vallum dan Murus). Scudo 1.0 beta 3 saat ini tersedia secara gratis, info lebih lanjut tentang penyetelan bandwidth per proses Scudo dapat ditemukan di sini: http://www.murusfirewall.com/forum/viewtopic.php?f=2&t=1919&p=3281#p3281

Hany El Imam
sumber
Saya mencoba ini dan tampaknya berhasil. Ini sekarang dalam versi beta 6 (beta 3 tidak akan berfungsi lagi) - murusfirewall.com/forum/viewtopic.php?f=2&t=1949 Saya suka Monitor Jaringan yang memungkinkan Anda menambah firewall dan melakukan pelambatan bandwidth.
f01