Como faço para falsificar pacotes descartados (ou realmente fazê-los falhar)?

5

Plano de fundo

Um de nossos clientes sofre de um problema intermitente com sua internet, onde ele solta os pacotes quando um usuário faz o download de um arquivo grande (sua TI está investigando o problema).

Eu tenho um aplicativo que consiste em um servidor Web executando o Windows 2008 R2 IIS7.5 e um cliente executando o Windows 7, Chrome, que usa um XMlHttpRequest de longa duração para transferir "mensagens" do servidor para o cliente.

O problema.

Meu aplicativo deve ser bastante imune a essas perdas de pacotes, mas na prática não é.

Eu quero testar o aplicativo em vários cenários de problemas de rede diferentes, por exemplo, perda aleatória de pacotes em 1% e perda de pacotes em rajadas - por exemplo, perda total de pacotes por 4.000 ms e assim por diante.

Estou procurando uma solução que me permita "reproduzir" um cenário e testar meu aplicativo. Eu poderia usar 3G, ou desconectar e desconectar o cabo de rede, mas os efeitos não são muito reprodutíveis.

A questão.

Existe um aplicativo / driver que eu possa instalar na minha máquina para simular conexões de internet "desonestas"? Ou talvez um appliance ou servidor proxy que eu possa usar na rede para burlar esses cenários?

Eu estou supondo que não é muito fácil de fazer em um computador moderno, porque eu espero que a maior parte da pilha TCP seja descarregada na placa de rede, mas eu teria pensado que isso era uma coisa razoavelmente popular para tentar fazer, no entanto eu não tive sorte no google. Sou mais proficiente no Windows, mas uma solução que usa o Linux, seja como cliente ou proxy, seria bem-vinda.

    
por Daniel James Bryars 15.05.2012 / 19:43

2 respostas

6

Um simples roteador linux no meio poderia fazer isso para você sem falhas. Basta fazer algumas leituras em netem . Você pode replicar tudo, inclusive pacotes perdidos, pacotes reordenados, pacotes corrompidos e até latência. Eu mesmo uso para simular links baseados em satélite.

    
por 15.05.2012 / 20:15
2

Eu usei o TMNetSim para fazer isso. Ele faz o proxies de qualquer porta que você queira, então ele pode ser usado para a maioria dos aplicativos.

link

Você pode querer executar uma captura de pacote correlacionada no cliente e no lado do servidor, e determinar se o cliente é recebedor de um pacote RST. Se assim for, é proveniente do seu servidor. E isso ocorre em momentos previsíveis, como após cinco minutos de inatividade.

    
por 15.05.2012 / 20:02

Tags