Имитация сетевого подключения с низкой пропускной способностью и высокой задержкой в ​​Linux

18247
Justin L.

Я хотел бы имитировать сетевое соединение с высокой задержкой и низкой пропускной способностью на моем компьютере с Linux.

Ограничение пропускной способности было обсуждено ранее, например, здесь, но я не могу найти посты, в которых рассматриваются ограничения как пропускной способности, так и задержки.

Я могу получить либо высокую задержку, либо низкую пропускную способность tc. Но я не смог объединить их в одно соединение. В частности, пример скрипта управления скоростью здесь не работает для меня:

# tc qdisc add dev lo root handle 1:0 netem delay 100ms  # tc qdisc add dev lo parent 1:1 handle 10: tbf rate 256kbit buffer 1600 limit 3000 RTNETLINK answers: Operation not supported 

Как я могу создать соединение с низкой пропускной способностью, высокой задержкой, используя tcили любой другой легкодоступный инструмент?

19
Вы пытались объединить подходы из ваших ссылок, например. использовать tc для задержек и trickle для пропускной способности? (Это ужаснее, чем просто использование tc, но все еще может работать;) Andy 14 лет назад 1
Это хорошая идея (и, действительно, trickle даже добавит задержки), но, к сожалению, Firefox не загружается при trickle, и это то, что мне нужно проверить. Justin L. 14 лет назад 0

2 ответа на вопрос

15
Justin L.

Ага! Это работает, если мы изменим порядок команд.

tc qdisc add dev lo root handle 1: htb default 12  tc class add dev lo parent 1:1 classid 1:12 htb rate 20kbps ceil 20kbps  tc qdisc add dev lo parent 1:12 netem delay 1000ms  

https://lists.linux-foundation.org/pipermail/netem/2010-May/001388.html

Всем, кто интересуется, почему, кажется, что netem qdisc не может быть родительским, поэтому вы должны перестроить иерархию, чтобы он стал листовым узлом. Andy 14 лет назад 0
Обратите внимание, что ограничение полосы пропускания только в одном направлении (исходящее). Вы должны проделать дополнительную работу, чтобы это произошло в обоих направлениях (очевидно, с использованием ifb). http://www.linuxfoundation.org/collaborate/workgroups/networking/netem#Emulating_wide_area_network_delays Roger Binns 11 лет назад 3
Наткнулся на это при попытке взломать тк. Из того, что я прочитал, первая строка создает 1: 0, но вторая строка относится к 1: 1? (возможно, мое понимание неверно - но я заглянул на множество страниц, пытаясь понять, как нумеруются классы / qtdiscs) symcbean 11 лет назад 0
1
Matthew Lock

Это не бесплатно, но прокси-сервер отладки Charles может моделировать соединения с низкой пропускной способностью и высокой задержкой

http://www.charlesproxy.com/documentation/proxying/throttling/

Интересно, что на самом деле я делаю это для веб-отладки. Но наверняка должен быть способ сделать это, не тратя деньги. :) Justin L. 14 лет назад 0
К сожалению, Чарльз, кажется, не работает с местным движением. Он умирает, когда я пытаюсь получить доступ к 192.168.1.1 через прокси. Justin L. 14 лет назад 0
Или просто используйте WANEm бесплатно: http://wanem.sourceforge.net/ Nathan Kidd 13 лет назад 2