Можна обмежити швидкість руху трафіку за допомогою інструментів tc
та netem
інструментів, але це обмежить швидкість для мережевого інтерфейсу комп'ютера. Я припускаю, що ви використовуєте лише wget
або curl
жоден інший додаток не обмінюєтеся трафіком через мережевий інтерфейс.
tc
використовує фільтр Token Bucket Filter (TBF) для контролю швидкості.
Одним із прикладів TBF є наступний (посилання http://www.lartc.org/manpages/tc-tbf.html ):
Щоб приєднати TBF з витриманою максимальною швидкістю 0,5 Мбіт / с, пікатом 1,0 Мбіт / с, 5-кілобайтним буфером, з обмеженням розміру черги попереднього відра, розрахованим таким чином, що TBF спричиняє не більше 70 мс затримки, з ідеальною поведінкою пікату , проблема:
# tc qdisc add dev eth0 root tbf rate 0.5mbit \ burst 5kb latency 70ms peakrate 1mbit \ minburst 1540
Іншим прикладом usign tc і netem є такий (знайдений на http://www.linuxfoundation.org/collaborate/workgroups/networking/netem ):
Немає вбудованого контролю за швидкістю дисципліни, натомість використовуйте одну з інших дисциплін, яка робить контроль швидкості. У цьому прикладі ми використовуємо фільтр Token Bucket Filter (TBF) для обмеження виходу.
Щоб додати затримку кожного пакета, що йде / надходить через інтерфейс eth0
# tc qdisc add dev eth0 root handle 1:0 netem delay 100ms
щоб додати швидкість передачі даних у форматі tbf, розмірі буфера пакетів та максимальній межі розриву
# tc qdisc add dev eth0 parent 1:1 handle 10: tbf rate 256kbit buffer 1600 limit 3000
Щоб побачити список правил, призначених у tc для інтерфейсу eth0
# tc -s qdisc ls dev eth0
Вихід з вищевказаної команди буде таким, як нижче
qdisc netem 1: limit 1000 delay 100.0ms
Sent 0 bytes 0 pkts (dropped 0, overlimits 0 )
qdisc tbf 10: rate 256Kbit burst 1599b lat 26.6ms
Sent 0 bytes 0 pkts (dropped 0, overlimits 0 )
Перевірте параметри буфера та обмеження, оскільки, можливо, вам знадобляться більші за замовчуванням, ніж ці (вони знаходяться в байтах)