Моделювання мережевого з'єднання з низькою пропускною здатністю та високою затримкою в 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 для затримки і струмок для пропускної здатності? (Це гірше, ніж просто використовувати tc, але все одно може працювати;)
Енді,

Це гарна ідея (і, дійсно, струменевий додасть навіть затримку), але, на жаль, Firefox не завантажується під струменем, і це те, що мені потрібно перевірити.
Джастін Л.

Відповіді:


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

Це не безкоштовно, але проксі-сервер налагодження Чарльза може імітувати низьку пропускну здатність з'єднань з високою затримкою

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


Цікаво, що я фактично роблю це для налагодження в Інтернеті. Але, безумовно, повинен бути спосіб це зробити, не витрачаючи грошей. :)
Джастін Л.

На жаль, Чарльз, схоже, не працює з місцевим трафіком. Він вмирає, коли я намагаюся отримати доступ до 192.168.1.1 через проксі.
Джастін Л.

2
Або просто користуйтеся WANEm безкоштовно: wanem.sourceforge.net
Nathan Kidd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.