Как заставить сетевой интерфейс отбрасывать определенный процент пакетов

Я хочу протестировать приложение на предмет перебоев в работе сети или неисправности сети. Есть ли какой-нибудь инструмент, чтобы сделать интерфейс подверженным дефектам или иным образом симулировать некачественное соединение? Например, заставить интерфейс отбрасывать 10 процентов пакетов.

1
задан 4 December 2017 в 13:02

2 ответа

Модуль random в iptables можно использовать для создания потери пакетов.
Для 10% потерь входящих пакетов:

$ sudo iptables -A INPUT -m statistic --mode random --probability 0.1 -j DROP

В результате этого результата эхо-запроса с другого компьютера:

--- rpi01-wifi.smythies.com ping statistics ---
247 packets transmitted, 217 received, 12% packet loss, time 246752ms
rtt min/avg/max/mdev = 0.958/4.933/169.588/17.884 ms

Аналогично для исходящих пакетов:

$ sudo iptables -A OUTPUT -m statistic --mode random --probability 0.1 -j DROP

Resulting в этом эхо-запросе с другого компьютера:

--- rpi01-wifi.smythies.com ping statistics ---
1006 packets transmitted, 871 received, 13% packet loss, time 305146ms
rtt min/avg/max/mdev = 0.892/7.363/476.902/35.397 ms, pipe 2

Объединение INPUT и OUTPUT принудительной потери пакетов, но с вероятностью 0,5% каждый:

$ sudo iptables -A INPUT -m statistic --mode random --probability 0.005 -j DROP
$ sudo iptables -A OUTPUT -m statistic --mode random --probability 0.005 -j DROP

Результат:

--- rpi01-wifi.smythies.com ping statistics ---
1000 packets transmitted, 967 received, 3% packet loss, time 253840ms
rtt min/avg/max/mdev = 0.876/7.583/536.867/36.065 ms, pipe 3

См. Также здесь .

2
ответ дан 4 December 2017 в 13:02

netem использует функциональность, уже встроенную в Linux и утилиты пространства пользователя, для симуляции сетей и может выполнять именно то, что вы просите.

Со своей домашней страницы .

Потеря пакета

Случайная потеря пакета указывается в команде 'tc' в процентах. Наименьшее возможное ненулевое значение:

232 = 0,0000000232%

# tc изменение диска dev eth0 потеря корневого узла 0,1%

Это вызывает 1/10 процента (т.е. 1 из 1000) пакетов, которые должны быть случайно отброшены.

Также может быть добавлена ​​необязательная корреляция. Это приводит к тому, что генератор случайных чисел становится менее случайным и может использоваться для эмуляции потерь пакета.

# tc qdisc change dev eth0 потеря корневого узла 0,3% 25%

Это приведет к потере 0,3% пакетов, и каждая последующая вероятность зависит на четверть от последней.

Пробн = .25 * Пробн-1 + .75 * Случайный

1
ответ дан 4 December 2017 в 13:02

Другие вопросы по тегам:

Похожие вопросы: