Saya sedang mengembangkan game multiplayer online. Ini berfungsi dengan baik ketika saya mengujinya di jaringan area lokal, tetapi sebelum saya merilisnya saya ingin menguji bagaimana pengalaman pengguna bekerja untuk seseorang yang belum memiliki koneksi yang baik ke server. Bagaimana saya bisa mensimulasikan koneksi internet yang buruk dengan latensi tinggi, bandwidth rendah, jitter dan paket loss sesekali ketika di lingkungan lokal?
networking
testing
Philipp
sumber
sumber
Jawaban:
Saya pikir Dummynet adalah apa yang Anda cari. Dummynet adalah alat emulasi jaringan yang dapat mensimulasikan batasan bandwidth, penundaan, kehilangan paket, dan banyak lagi. Anda dapat dengan mudah memilih lalu lintas yang ingin dihadang dan mengkonfigurasi batasan, misalnya untuk membatasi semua lalu lintas TCP yang masuk ke 2Mbit / s yang Anda lakukan
Anda melihat pemilihan lalu lintas dilakukan oleh firewall ipfw yang dikenal dan pipa menyediakan fitur pembatasan.
Ini tersedia untuk FreeBSD, Linux dan Windows.
sumber
Kondisioner Tautan Jaringan
Jika Anda menggunakan Mac, Anda dapat menggunakan Network Link Conditioner.
Anda dapat mensimulasikan berbagai kasus koneksi internet yang buruk, termasuk Edge dan 3G.
Selain itu, Anda dapat membuat profil Anda sendiri dengan pengaturan Anda sendiri:
Ini adalah unduhan gratis di Xcode (pergi ke Xcode → Buka Alat Pengembang → Alat Pengembang Lainnya ... dan unduh Perangkat Keras IO Alat untuk Xcode ).
sumber
Jika Anda menggunakan linux, Anda dapat menggunakan netem untuk mensimulasikan semua masalah yang mungkin terjadi pada jaringan seperti latensi tinggi, bandwidth rendah, kehilangan paket, dan banyak lainnya.
Ada opsi untuk windows yang disebut NetLimiter tapi saya belum menggunakannya jadi tidak bisa menjaminnya.
Baru saja menemukan Aplikasi Mac bernama SlowlyApp .
sumber
Kikuk , untuk Windows Vista & 7.
sumber
Jika Anda menggunakan Windows, Anda dapat mencoba SoftPerfect Connection Emulator . Ini pada dasarnya driver yang menyuntikkan dirinya antara aplikasi Anda dan lapisan jaringan (mirip dengan Wireshark / WinPCAP) untuk NIC yang dipilih dan dapat mensimulasikan bandwidth terbatas, latensi, kehilangan paket, dan hal-hal lainnya. UI sederhana dan mudah.
Ini adalah produk komersial, tetapi percobaan memungkinkan Anda melakukan semburan "gangguan" selama 30 detik yang seharusnya cukup baik bagi Anda untuk menilai apakah alat ini melakukan apa yang Anda inginkan.
Opsi lintas-platform lainnya adalah DummyNet , yang berperilaku serupa (via ipfw) tetapi sedikit kurang mudah digunakan.
Saya pikir bagian dari pertanyaan ini dapat dinyatakan kembali sebagai "bagaimana cara saya menangani latensi jaringan dalam aplikasi saya?" Salah satu teknik yang umum digunakan dan efektif adalah Dead Reckoning . Artikel yang ditautkan menjelaskannya lebih baik daripada yang saya bisa, tetapi ide dasarnya adalah bahwa klien Anda semacam "mensimulasikan" di mana setiap entitas seharusnya dan apa yang seharusnya dilakukan oleh suatu algoritma. Setiap kali entitas menyimpang dari algoritma ini (yaitu input pemain, acara sisi server, dll), ia mengirimkan pembaruan ke setiap klien.
sumber
Saya belum menggunakannya dalam beberapa saat, tetapi saya telah menggunakan Charles untuk menguji ini. Ini adalah aplikasi dengan berbagai alat diagnostik jaringan, termasuk mensimulasikan masalah yang Anda sebutkan: "koneksi internet yang buruk dengan latensi tinggi, bandwidth rendah, jitter, dan terkadang kehilangan paket"
sumber
Jika Anda cerdas dengan Fiddler , dan Anda hanya tertarik dengan HTTP / 1 maka Anda dapat membuat skrip ini.
Fiddler tidak mendukung HTTP / 2, mencegatnya akan menyebabkan semua lalu lintas HTTP turun ke HTTP / 1.
sumber