Cara mensimulasikan koneksi internet lambat di mac


145

Apa solusi perangkat lunak yang bagus untuk memperlambat koneksi internet pada mac untuk pengujian dan simulasi?

Kebutuhan utama saya adalah ketika menguji kode dalam iPhone / iOS simulator, jadi memperlambat koneksi untuk aplikasi atau proses tertentu akan sangat bagus.


Saya menemukan jawaban yang diterima (Network Link Conditioner) juga menjadi solusi cepat dan kotor yang sangat baik untuk masalah bufferbloat.
Robert Tupelo-Schneck

Jawaban:


168

Apple telah membuat alat resmi yang sangat berguna untuk memperlambat koneksi jaringan pada Mac Anda untuk tujuan pengujian.

The Link Jaringan Conditioner preferensi adalah download gratis dari dalam Xcode (untuk Lion dan kemudian OS). Selain itu, iOS memiliki fungsi serupa yang dapat diakses dari dalam Xcode dan iOS 6 atau lebih baru.

masukkan deskripsi gambar di sini

Versi Xcode yang lebih lama sebelum versi 4.3.2 menyematkan salinan alat ini. Sekarang, Anda menggunakan Xcode untuk mengunduhnya secara langsung dengan cara yang mirip dengan simulator iOS dan dokumentasi pengembang.

Ada 11 profil bawaan dari jaringan Lossy Edge dengan penundaan 400ms ke modem kabel. Jika Anda membutuhkan batasan lain, Anda dapat membuat profil khusus dengan pengaturan Anda sendiri atau Anda juga dapat menggunakan ipfwdiri Anda sendiri seperti yang dijelaskan dalam artikel slow ride karya Craig Hockenberry , membuatnya mudah. Itu juga menyebutkan panel Speed ​​Limit oleh Mike Schrag yang merupakan unduhan yang lebih kecil daripada Xcode, tetapi memiliki lebih sedikit opsi daripada alat Apple.

Ini memperlambat seluruh tumpukan jaringan, sehingga Anda tidak dapat mencekik pada basis per aplikasi tanpa melakukan hal-hal seperti menginstal singa di mesin virtual dan mengatur VM itu dengan tumpukan yang dibatasi.


1
: OI bahkan punya Xcode dan tidak tahu tentang ini
Alexander

21
Pastikan untuk mematikannya setelah Anda selesai menguji!
Jason Salaz

1
Klarifikasi: Anda sebenarnya harus mengunduh alat IO perangkat keras dari Apple. Lihat Menginstal Alat Kondisioner Tautan Jaringan Apel
daviesgeek

2
Batas Kecepatan yang disebutkan di bawah ini berfungsi dengan sangat baik . Saya menggunakannya sekarang untuk localhost: 8888 di MAMP.
Anriëtte Myburgh

1
Perhatikan juga bahwa iOS 6 memiliki kondisioner tautan jaringan untuk pengujian pada perangkat. Akses melalui Pengaturan-> Pengembang di bawah bagian "Network Link Conditioner".
Mike Weller

35

OS X 10.9 dan sebelumnya menyediakan ipfwdan memungkinkan Anda untuk menentukan aturan firewall kustom. Buat pipa dengan penggunaan bandwidth terbatasipfw dan Anda dapat menjalankan tes dan simulasi.

  1. Buat pipa "1" terbatas hingga 500KBytes / s via

    sudo ipfw pipe 1 config bw 500KByte/s
    
  2. Pandu semua lalu lintas jaringan port 80 melalui pipa "1" menggunakan

    sudo ipfw add 1 pipe 1 src-port 80
    
  3. Bila Anda tidak membutuhkan pipa lagi, lepaskan dari pelabuhan menggunakan

    sudo ipfw delete 1
    

Lain

  • Jika Anda ingin menetapkan penghalang lalu lintas yang lebih tinggi, Anda dapat menggunakannya MByte/s
  • Port 80: port standar untuk httplalu lintas yang tidak dienkripsi . Port ini digunakan untuk sebagian besar penjelajahan dan pengunduhan. Anda harus baik-baik saja dengan ini dalam banyak kasus.
  • Port 443: port standar untuk httpslalu lintas terenkripsi SSL .

10
sayangnya, ipfw telah dihapus di OS X 10.10 Yosemite
igo

Anda dapat menggunakan pfctl untuk membatasi bandwidth pada OS X 10.10+ - spin.atomicobject.com/2016/01/05/...
Eugene A

Saya telah menambahkan jawaban di bawah ini yang menunjukkan pfctldan dnctlcontoh penggunaan.
ubershmekel

31

Batas Kecepatan adalah panel System Preferences untuk sengaja dan selektif memperlambat port dan domain tertentu.


Saya suka itu lebih rinci daripada alat XCode yang disebutkan dalam jawaban yang diterima. Terima kasih untuk sarannya.
sholsinger

1
Sungguh, saya menemukan bahwa "localhost" tidak berfungsi, beralih ke alamat ip 127.0.0.1 berhasil.
OlliM

4
SpeedLimit tidak berfungsi pada OS X 10.10 karena alat firewall yang digunakannya dihapus: github.com/mschrag/speedlimit/issues/13
Robin

Tautan ke Batas Kecepatan terputus.
Jeff Holt

Sumber ke Batas Kecepatan tampaknya tidak terawat sekarang, tetapi tersedia di sini dan memiliki garpu yang lebih mutakhir di sini meskipun saya belum mengujinya sama sekali
Brad Parks

11

Untuk menambah jawaban yang diterima: sepertinya Anda tidak perlu XCode, cukup sebuah akun di situs web Pengembang Apple (lebih sederhana daripada mengunduh paket 2GB XCode terlebih dahulu jika Anda belum memilikinya).

Buka https://developer.apple.com/downloads dan cari "Network Link Conditioner" atau "Tools Tambahan untuk XCode", yang terakhir adalah nama paket yang ditemukan.

Untuk mengunduhnya melalui Xcode 8.x:

  • Klik pada menu Xcode
  • Pergi ke Buka Alat Pengembang> Alat Pengembang Lainnya ...
  • Ini akan membuka halaman di developer.apple.com (Catatan: Anda mungkin harus masuk dulu)
  • Klik tanda '+' di sebelah Alat Tambahan untuk Xcode 8.x
  • Klik pada URL unduhan

2
Selamat Datang di Tanya Berbeda! Alih-alih menulis jawaban untuk mengedit jawaban orang lain, cukup klik edit atau tingkatkan tombol jawaban ini di bawah pos yang ingin Anda tingkatkan .
GRG

9

Jika Anda hanya perlu pelambatan untuk pengembangan Web, saya dengan sepenuh hati dapat merekomendasikan Charles . Ini adalah alat yang sangat baik untuk men-debug aplikasi HTTP, dan di antara banyak fitur-fiturnya, ada opsi Throttle. Perangkat lunak ini tidak murah, tetapi melakukan pekerjaan yang sangat baik.


Saya benar-benar membutuhkannya untuk simulator iPhone .. dan menguji koneksi ke server
aneuryzm

5

Pengguna Mac OS X 10.10+ perlu menggunakan dnctldan pfctltetapi contoh penggunaan yang terdokumentasi tidak mudah ditemukan.

# Configure `pfctl` to use `customRule`. 
(cat /etc/pf.conf && echo "dummynet-anchor \"customRule\"" && echo "anchor \"customRule\"") | sudo pfctl -f -

# Define `customRule` to pipe traffic to `pipe 1`.
# Note this is the actual port definition, not a textual comment
echo "dummynet in quick proto tcp from any to any port 443 pipe 1" | sudo pfctl -a customRule -f -

# Define what `pipe 1` should do to traffic
sudo dnctl pipe 1 config delay 10000
sudo dnctl pipe 1 config bw 10Kbit/s

# DO NOT FORGET to undo these when you're done
sudo dnctl -q flush
sudo pfctl -f /etc/pf.conf

Jika Anda ingin keluar semua dan membentuk semua yang dapat Anda gunakan:

echo "dummynet in quick proto tcp from any to any pipe 1" | sudo pfctl -a customRule -f -

Saya percaya ini juga mempengaruhi pipa localhost yang memperlambat debugging vs-code saya, jadi berhati-hatilah.


4

Anda juga dapat menggunakan ipfw piping untuk memperlambat jaringan Anda.

Pertama, atur "pipa" virtual untuk membatasi throughput hingga 800KBit / detik:

ipfw pipe 1 config bw 800Kbit

Kemudian Anda dapat mengatur aturan untuk mendorong lalu lintas melalui pipa itu (pipa 1). (port 6881-6890 menjadi lalu lintas yang lebih kecil)

ipfw add 10 pipe 1 tcp from any to me 6881-6890
ipfw add 11 pipe 1 tcp from any 6881-6890 to me

Berikut contoh lain untuk membatasi lalu lintas hingga 10Kbit / detik dari alamat IP tertentu:

ipfw pipe 2 config bw 10Kbit
ipfw add 15 pipe 2 ip from me to 64.81.84.114

(Sumber)


ipfw telah dihapus di OSX 10.10
Ben Wheeler

-1

Untuk XCode 10.2, di Alat pengembang lainnya - Alat tambahan untuk XCode 10.2, Anda akan menemukan Network Link Conditioner.


Bagaimana solusi ini berbeda dari jawaban yang sudah disediakan?
Nimesh Neema

Saya keliru mengunduh perangkat keras meskipun untuk versi XCode lama, saya pikir itu akan berhasil karena saya belum melihatnya untuk versi yang lebih baru. Tidak ada tertulis di mana pun untuk XCode 10.2 yang baru saya harus memilih Alat Tambahan untuk mendapatkan kondisioner tautan Jaringan terbaru. Itu disebutkan di sini sehingga pengembang lain tidak membuang waktu mereka. Jika Anda menemukannya tidak berbeda dari yang lain, minus lima belas kali. Saya melakukannya sehingga yang lain mendapat bantuan darinya dengan mencari
XCode

Akan sangat membantu siapa pun yang membaca jawaban ini jika Anda dapat mengedit jawaban Anda dan memasukkan informasi penting ini. Juga, banyak pengguna merasa memiliki instruksi tertulis dan langkah demi langkah yang sangat berharga.
Nimesh Neema

@NimeshNeema Saya pikir semua pengembang tahu di komunitas bahwa Anda dapat menemukan alat ini melalui alat pengembang lainnya. Saya sudah menulis langkah-langkahnya. Saya tidak berpikir jadi saya harus menyebutkan lebih detail.
Kiran Jasvanee

Benar-benar baik dan terserah Anda bagaimana Anda memilih untuk menulis jawaban. Disebutkan pada umumnya hanya mengikuti latihan daripada aturan :)
Nimesh Neema
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.