2013-09-13 1 views
4

Я пытаюсь эмулировать медленную сетевую связь с командой tc. Я использую netem для эмуляции задержки и потери пакетов и htb для эмуляции узкой полосы пропускания, но я считаю, что существует ограничение в netem, что делает этот вариант? повлияет ли она на конечную полосу пропускания?Что означает предел опций в tc netem и делать?

Я гугл его и найти что-то в http://manpages.ubuntu.com/manpages/raring/man8/tc-netem.8.html

, который говорит:

ограничивает влияние выбранных опций для указанного количества следующих пакетов.

Но я все еще не могу понять, что он делает.

+1

Я согласен, что это озадачивает. Я считаю, что manpage довольно ясна, но netem не делает то, что я ожидаю: «limit 10 loss 100%» должен упасть только на следующий 10 пакетов. Но на самом деле все пакеты удаляются. Для меня «предел» не имеет никакого эффекта. –

ответ

2

От https://lists.linuxfoundation.org/pipermail/netem/2007-March/001091.html

Параметр «предел» относится к количеству буферов, выделенных в модуле netem .

Предел должен быть скорректирован для поддержки числа отложенных кадров (500 мс, например,) при заданной скорости передачи данных.

С уважением,

Laurent MARIE

+0

Любая идея, если это означает ее размер, например, буферы TCP, т. Е. Размер буфера = 2 * задержка * пропускной способности? Я также слышал, что это должна быть полоса пропускания/MTU. –

1

Я не знаю точно, что netem делает, но я обнаружил, что если вы не установили «предел» на более высокое значение, netem работает некорректно, то есть он отбрасывает пакеты с более высокой скоростью и, возможно, имеет другие проблемы, по существу не точно имитируя реальную сеть.

Из mailing list упомянутой CarlH, Стивен Хеммингер сказал:

предельное значение в пакетах, по крайней мере при использовании Qdisc по умолчанию внутри netem (tfifo). Вы также можете использовать pfifo и настроить его на ограничение по или bfifo равным числу байтов. Значение 1000 является низким, вы хотите на 50% больше, чем максимальная скорость передачи пакетов * задержка, если вы не являетесь , пытаясь эмулировать маршрутизатор с небольшой очередью.

Для связи 1 Гбит/с, 1 Гбит/с/1500 байт МТУ * 100 мс * 1,5 = 12500.

Команда:

sudo tc qdisc add dev eth1 root netem limit 12500 delay 100ms loss 1% 

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

Смежные вопросы