Eu gostaria de simular o atraso e a perda de pacotes para UDP
e TCP
no Linux para medir o desempenho de um aplicativo. Existe uma maneira simples de fazer isso?
linux
tcp
throttling
George Stocker
fonte
fonte
Respostas:
O netem aproveita a funcionalidade já incorporada no Linux e nos utilitários de espaço do usuário para simular redes. É a isso que a resposta de Marcos se refere, por um nome diferente.
Os exemplos na página inicial já mostram como você pode conseguir o que pediu:
Observe que você deve usar
tc qdisc add
se você não possui regras para essa interface outc qdisc change
se já possui regras para essa interface. Tentar usartc qdisc change
em uma interface sem regras dará o erroRTNETLINK answers: No such file or directory
.fonte
tc -p qdisc ls dev eth0
irá listar regras definidas atuais, etc qdisc del dev eth0 root
irá excluí-losPara pacotes descartados, eu simplesmente usaria o iptables e o módulo estatístico .
Acima, o pacote será recebido com uma probabilidade de 1%. Tenha cuidado, qualquer coisa acima de 0,14 e a maioria das conexões TCP provavelmente travará completamente.
Dê uma olhada no man iptables e procure por "estatística" para obter mais informações.
fonte
DROP
nas conexões de saída, o ridículo faz com que assend()
operações retornemEPERM
, em vez de apenas soltar pacotes (como deveria).iptables -D INPUT -m statistic --mode random --probability 0.01 -j DROP
Um dos meus colegas usa o tc para fazer isso. Consulte a página do manual para obter mais informações. Você pode ver um exemplo de seu uso aqui .
fonte
O iptables (8) possui um módulo de correspondência estatística que pode ser usado para corresponder a cada enésimo pacote. Para descartar este pacote, basta acrescentar -j DROP .
fonte
Este tutorial sobre simulações de física de rede contém uma classe C ++ no código de exemplo para simular a latência e a perda de pacotes em uma conexão UDP e pode ser uma orientação. Veja as variáveis de latência pública e packetLoss da classe Connection encontradas no arquivo Connection.h do código-fonte disponível para download .
fonte
Ainda não tentei, mas esta página possui uma lista de módulos de plug-in que são executados no sistema de filtragem de iptables embutido no Linux. Um dos módulos é chamado "enésimo" e permite que você configure uma regra que reduzirá uma taxa configurável dos pacotes. Pode ser um bom lugar para começar, pelo menos.
fonte
Você pode tentar http://snad.ncsl.nist.gov/nistnet/ É um projeto NIST bastante antigo (última versão de 2005), mas funciona para mim.
fonte
Uma ferramenta de injeção de falhas de rede fácil de usar é o Saboteur . Pode simular:
fonte
Uma das ferramentas mais utilizadas na comunidade científica para esse fim é o DummyNet . Depois de instalar o
ipfw
módulo do kernel, para introduzir um atraso de propagação de 50ms entre duas máquinas, execute estes comandos:Para introduzir também 50% das perdas de pacotes, você deve executar:
Aqui mais detalhes.
fonte