Como fazer com que uma interface de rede caia uma porcentagem definida de pacotes

1

Eu quero testar um aplicativo contra interrupção de rede ou rede defeituosa. Existe alguma ferramenta para tornar uma interface propensa a defeitos ou simular uma conexão de baixa qualidade? Por exemplo, force interface para descartar 10% dos pacotes.

    
por little ali 04.12.2017 / 10:58

2 respostas

2

O módulo random no iptables pode ser usado para criar perda de pacotes.
Para uma perda de pacotes de entrada de 10%:

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

Resultando neste resultado de ping de outro computador:

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

Da mesma forma para pacotes de saída:

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

Resultando neste resultado de ping de outro computador:

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

Combinando a perda de pacotes forçada de INPUT e OUTPUT , mas com uma probabilidade de 0,5% cada:

$ 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

Resultados em:

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

Veja também aqui .

    
por Doug Smythies 04.12.2017 / 16:55
1
O

netem aproveita a funcionalidade já incorporada aos utilitários Linux e userspace para simular redes e pode fazer exatamente o que você está pedindo.

De sua página inicial .

  

Perda de pacotes

     

A perda aleatória de pacotes é especificada no comando 'tc' em porcentagem. o   menor valor possível de zero é:

     

232 = 0,0000000232%

     

# tc qdisc altere dev eth0 perda de netem raiz 0.1%

     

Isso faz com que 1 / 10th de um por cento (ou seja, 1 em 1000) pacotes seja   caiu aleatoriamente.

     

Uma correlação opcional também pode ser adicionada. Isso faz com que o aleatório   gerador de números para ser menos aleatório e pode ser usado para emular pacotes   perdas de ruptura.

     

# tc qdisc altera dev perda de netem raiz eth0 0.3% 25%

     

Isso fará com que 0,3% dos pacotes sejam perdidos, e cada um dos sucessivos   probabilidade depende de um quarto no último.

     

Probn = 0,25 * Probn-1 + 0,75 * Aleatório

    
por Tom 04.12.2017 / 16:11