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

19

Я хотел бы смоделировать сетевое соединение с высокой задержкой и низкой пропускной способностью на моем компьютере с 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или любой другой легкодоступный инструмент?

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

Ответы:

15

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

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 не может быть родительским, поэтому вы должны перестроить иерархию, чтобы он был в качестве конечного узла.
Энди
3
Обратите внимание, что ограничение полосы пропускания только в одном направлении (исходящее). Вы должны проделать дополнительную работу, чтобы это произошло в обоих направлениях (очевидно, используя ifb). linuxfoundation.org/collaborate/workgroups/networking/…
Роджер Биннс
Наткнулся на это при попытке взломать тк. Из того, что я прочитал, первая строка создает 1: 0, но вторая строка относится к 1: 1? (возможно, мое понимание неверно - но я заглянул на множество страниц, пытаясь понять, как нумеруются классы / qtdiscs)
symcbean
1

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

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

Мэтью Лок
источник
Интересно, что я делаю это для отладки в сети. Но наверняка должен быть способ сделать это, не тратя деньги. :)
Джастин Л.
К сожалению, Чарльз, кажется, не работает с местным движением. Он умирает, когда я пытаюсь получить доступ к 192.168.1.1 через прокси.
Джастин Л.
2
Или просто используйте WANEm бесплатно: wanem.sourceforge.net
Натан Кидд,