Saya tidak pernah benar-benar mengerti apakah mungkin untuk menilai-membatasi lalu lintas masuk . Saya menyadari bahwa tidak ada metode langsung di mana untuk mengontrol tingkat server pengiriman paket (kecuali Anda mengendalikan kedua titik akhir), tetapi dengan mempertimbangkan batasan ini, bagaimana tepatnya manajer unduhan memungkinkan saya untuk berhasil menetapkan batas kecepatan unduhan ?
Apakah ada tautan antara lalu lintas masuk slow-start dan pembatasan-tarif? Apakah mungkin untuk menggunakan metode yang dijelaskan oleh slow-start untuk secara artifisial membatasi tingkat pengiriman paket pengirim?
Sebagai pertimbangan tambahan, harus dicatat bahwa server tempat saya ingin menerapkan pembentukan lalu lintas membentuk koneksi PPPoE itu sendiri, dan bertindak sebagai router untuk seluruh jaringan.
Pembaruan: Jawaban sejauh ini telah memberikan gambaran umum yang adil dari pertanyaan yang saya ajukan, tetapi saya masih tidak tahu bagaimana pengelola unduhan dapat membatasi lalu lintas yang masuk, dan lebih khusus lagi, apakah mungkin untuk menerapkan strategi serupa pada suatu Kotak gateway Linux.
sumber
Jawaban:
Pengelola unduhan kemungkinan besar berfungsi sebagaimana dijelaskan dalam kertas tetesan .
Jika Anda sesekali perlu memberi peringkat-batas pada satu program pada sistem UNIX, solusi sederhana akan berkurang . Pembentukan lalu lintas nyata, seperti yang akan Anda lakukan pada gateway, dapat dilakukan dengan
tc
. Ini didokumentasikan dalam Bab 9. Antrian Disiplin untuk Manajemen Bandwidth dari Linux Advanced Routing & Traffic Control HOWTO.sumber
Dalam hal modem 56k versus jalur 4 Mbps DSl, (biasanya) tidak ada yang membuat perbedaan kecepatan, itu hanya perbedaan dalam kecepatan tautan.
Alasan mengapa sulit untuk membentuk lalu lintas masuk adalah karena tidak ada penyangga dalam media transmisi. Anda menerima bit yang masuk atau hilang. Untuk lalu lintas yang hampir meninggalkan antarmuka, Anda dapat buffer dan memesan ulang paket sebanyak yang Anda inginkan (atau, setidaknya hingga memori buffer yang tersedia di perangkat).
Untuk protokol yang memiliki lapisan di atas TCP (saya tidak tahu apakah itu yang terjadi untuk torrents), itu akan menjadi masalah sederhana dari memacu permintaan untuk data lebih lanjut. Kalau tidak, aplikasi perlu berkomunikasi dengan OS, untuk menunda ACKing paket. Sebagian besar protokol berbasis UDP, karena kebutuhan, akan memiliki ACK / mengirim ulang logika dalam protokol khusus aplikasi, sehingga pada saat itu berbatasan dengan sepele untuk mempercepat mereka.
Salah satu rute yang mungkin adalah membentuk lalu lintas dari Internet di sisi LAN router DSL Anda, karena pada saat itu, Anda akan membentuk port keluar.
sumber
Saya tidak bisa menjawab mengapa Anda belum menemukan solusi apa pun yang memungkinkan membentuk data yang masuk (dan tidak tahu apa-apa di atas kepala saya), tetapi tentang bagaimana pengirim mengetahui seberapa cepat penerima dapat menerima data:
Desain dasar TCP / IP adalah bahwa untuk setiap paket yang dikirim sumber ke tujuan, ia harus menunggu tujuan untuk membalas kembali (dengan
ACK
paket) dengan mengatakan bahwa ia menerima paket tersebut.Jadi, jika Anda memiliki pengirim 4Mbps dan penerima 56Kbps, maka pengirim harus duduk dan menunggu di antara pengiriman paket agar penerima merespons setiap paket (Ada beberapa detail teknis untuk mengurangi overhead ini, tetapi premis masih berlaku pada abstrak tingkat).
Jadi apa yang terjadi jika pengirim sudah mengirimkan data 56Kbps dan kemudian mencoba mengirim sedikit lebih banyak?
Paket itu hilang. (Yah, berpotensi antri dalam buffer switch, tetapi ketika itu mengisi, paket hilang). Karena paket hilang, penerima tidak pernah menerimanya, dan karenanya tidak pernah mengirim
ACK
paket. Karena pengirim tidak pernah menerimaACK
paket ini (karena tidak pernah dikirim, tetapi juga bisa hilang, atau mungkin ada gangguan jaringan), pengirim diminta untuk mengirim ulang paket tambahan. Itu duduk dan mencoba untuk mengirim ulang paket sampai melewati danACK
jawabannya kembali ke sana.Jadi, untuk rekap, setelah pengirim telah memaksimalkan bandwidth penerima, ia harus berhenti dan mengirim ulang paket berikutnya berulang-ulang sampai ada cukup bandwidth yang tersedia untuk dilalui. Ini secara efektif mengurangi kecepatan kirim hingga maksimum yang dapat diterima klien. (Dan ada metode optimasi untuk mengurangi berapa kali suatu paket harus dikirim ulang dalam kasus ini, di mana pengirim pada dasarnya melambat setiap kali harus mengirim ulang paket, tetapi itu di luar cakupan deskripsi yang disederhanakan ini.
sumber
Anda dapat melakukannya dengan antarmuka ifb.
Dengan antarmuka ifb, Anda dapat merutekan aliran masuknya eth0 (atau apa pun) ke jalan keluar di ifb0 (misalnya), dan menerapkan aturan batas di sana.
Periksa url dari Linux Foundation ini: http://www.linuxfoundation.org/collaborate/workgroups/networking/ifb
Dan skrip ini yang membatasi incomming dan outcomming bandwight: https://github.com/rfrail3/misc/blob/master/tc/traffic-control.sh
sumber
Lihat wondershaper: http://lartc.org/wondershaper/
Mengenai lalu lintas masuk:
sumber
gunakan UFW (Dinding Api Tidak Rumit) http://ubuntuforums.org/showthread.php?t=1260812
Utas ini menunjukkan contoh sederhana bahwa default ke IP dengan 6 hit dalam 30 detik ditolak:
sudo ufw limit ssh/tcp
Juga perintah yang lebih 'maju' dengan nilai yang ditentukan untuk waktu dan jumlah hit
sudo iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
sudo iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j DROP
sumber