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

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

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

6 ответов

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

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

Результат этого результата ping с другого компьютера:

--- 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

Результатом этого результата ping с другого компьютера:

--- 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
ответ дан 22 May 2018 в 15:40

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

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

Результат этого результата ping с другого компьютера:

--- 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

Результатом этого результата ping с другого компьютера:

--- 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
ответ дан 18 July 2018 в 01:54

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

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

Результат этого результата ping с другого компьютера:

--- 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

Результатом этого результата ping с другого компьютера:

--- 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
ответ дан 24 July 2018 в 17:28

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

Из их netem .

[d4 ] Пакетная потеря. Случайная потеря пакета указана в команде «tc» в процентах. Наименьшее возможное ненулевое значение: 232 = 0.0000000232% # tc qdisc change dev eth0 root netem loss 0.1% Это приводит к случайному удалению 1/10-го процента (i.e 1 из 1000) пакетов. Также может быть добавлена ​​дополнительная корреляция. Это приводит к тому, что генератор случайных чисел является менее случайным и может использоваться для эмуляции потерь пакетов пакетов. # tc qdisc change dev eth0 root netem loss 0.3% 25% Это приведет к утере 0.3% пакетов, и каждая последующая вероятность будет зависеть на четверть последнего. Probn = .25 * Probn-1 + .75 * Random
1
ответ дан 22 May 2018 в 15:40

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

Из их netem .

Пакетная потеря. Случайная потеря пакета указана в команде «tc» в процентах. Наименьшее возможное ненулевое значение: 232 = 0.0000000232% # tc qdisc change dev eth0 root netem loss 0.1% Это приводит к случайному удалению 1/10-го процента (i.e 1 из 1000) пакетов. Также может быть добавлена ​​дополнительная корреляция. Это приводит к тому, что генератор случайных чисел является менее случайным и может использоваться для эмуляции потерь пакетов пакетов. # tc qdisc change dev eth0 root netem loss 0.3% 25% Это приведет к утере 0.3% пакетов, и каждая последующая вероятность будет зависеть на четверть последнего. Probn = .25 * Probn-1 + .75 * Random
1
ответ дан 18 July 2018 в 01:54

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

Из их netem .

Пакетная потеря. Случайная потеря пакета указана в команде «tc» в процентах. Наименьшее возможное ненулевое значение: 232 = 0.0000000232% # tc qdisc change dev eth0 root netem loss 0.1% Это приводит к случайному удалению 1/10-го процента (i.e 1 из 1000) пакетов. Также может быть добавлена ​​дополнительная корреляция. Это приводит к тому, что генератор случайных чисел является менее случайным и может использоваться для эмуляции потерь пакетов пакетов. # tc qdisc change dev eth0 root netem loss 0.3% 25% Это приведет к утере 0.3% пакетов, и каждая последующая вероятность будет зависеть на четверть последнего. Probn = .25 * Probn-1 + .75 * Random
1
ответ дан 24 July 2018 в 17:28

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

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