Premis:
Lokasi pedesaan, tidak banyak pilihan untuk koneksi internet bandwidth tinggi. Sejauh ini yang tercepat adalah internet satelit, tetapi mahal (peralatan dan biaya bulanan, dan memiliki kelemahan latensi), sehingga banyak rumah tangga ingin membagikannya.
Ini mudah - mengatur router dengan subnet untuk setiap rumah tangga (VLAN atau port fisik), memblokir lalu lintas di antara mereka dan mengkonfigurasi modem untuk merutekan ke subnet atau mengatur NAT ganda.
Masalah:
Cara TCP biasanya bekerja berarti bahwa setiap koneksi TCP akan lebih atau kurang mendapatkan 1 / n dari bandwidth yang tersedia, di mana n adalah jumlah koneksi. Jadi, jika satu rumah tangga / pengguna membuat banyak koneksi, mereka akan mendapatkan bagian lebih besar dari keseluruhan koneksi. Ini tidak adil - dengan tautan jenuh, setiap rumah tangga harus mendapat bagian yang sama. Di sisi lain, ketika tidak ada orang lain yang menggunakan koneksi, seharusnya dimungkinkan untuk menggunakan bandwidth penuh.
Misalnya, ada 4 rumah tangga yang berbagi koneksi turun 12Mbit / s. Jika salah satu dari mereka mengunduh / streaming / apa pun, mereka harus dapat menggunakan 12Mbit / s penuh (atau cukup dekat). Jika 2 rumah tangga menggunakan koneksi, mereka harus mendapatkan masing-masing 6Mbit / s, terlepas dari apakah satu rumah tangga mengunduh 1 file dan yang lainnya 11. (tanpa manajemen bandwidth, setiap file akan mengunduh sekitar 1Mbit / s dalam hal ini) 3 rumah tangga dapatkan 4Mbit / s masing-masing dan seterusnya.
Apa yang saya kerjakan sejauh ini:
Lokasi terbaik untuk menerapkan kebijakan seperti ini (untuk hilir) akan berada di ujung pipa sempit, yaitu di ISP. Jelas, itu tidak mungkin dalam kasus ini, jadi akan lebih baik untuk bisa memperkirakannya. Tapi bagaimana caranya? Apakah ada router yang mendukung sesuatu seperti ini? Bisakah saya mengonfigurasi kotak Linux atau BSD untuk melakukannya? Itu tidak harus anti peluru - server TCP yang nakal atau layanan UDP yang agresif mungkin bisa menghindari apa pun yang bisa saya lakukan di akhir saya - tetapi itu harus bekerja untuk kasus umum sebagian besar lalu lintas yang terdiri dari banyak yang sesuai dengan RFC Koneksi TCP.
Untuk lebih jelasnya, saya tidak berbicara tentang memprioritaskan aplikasi tertentu, melainkan lalu lintas agregat ke / dari perangkat ethernet tertentu atau rentang alamat IP. Memberikan beberapa lalu lintas prioritas yang lebih tinggi daripada lalu lintas lain tampaknya didukung dengan baik, tetapi situasinya kurang jelas ketika mencoba mengalokasikan bandwidth secara sama untuk kelas lalu lintas.
Ada banyak informasi yang ditulis dengan buruk / tidak sengaja dimuntahkan / jika tidak informasi tentang pembentukan lalu lintas di web. Dokumentasi pada perangkat keras router sangat tidak spesifik, jadi saya sepertinya berputar-putar.
Seperti yang saya pahami, cara untuk mendapatkan TCP berperilaku seperti ini adalah dengan mensimulasikan pipa yang sedikit lebih sempit daripada yang sebenarnya tersedia dan secara artifisial menjatuhkan paket untuk membuatnya mundur. Jadi saya pikir akan cukup mudah untuk memberikan semua orang 3Mbit / s dalam contoh di atas dengan secara artifisial menjatuhkan paket tambahan. Ini tidak benar-benar menggunakan koneksi secara efisien karena sebagian besar waktu ada kapasitas cadangan.
Apakah ada cara untuk melakukan apa yang saya minta? Apakah saya salah tentang hal itu? Saya (atau lebih tepatnya rumah tangga yang bersangkutan) bersedia mengeluarkan uang untuk hal ini - baik itu router / alat off-the-rak dengan harga sedang atau kotak generik untuk menjalankan distro Linux atau BSD.