Como simulo um ambiente de baixa largura de banda e alta latência?

201

Preciso simular uma conexão de baixa latência e alta largura de banda com um servidor para emular as condições de uma VPN em um site remoto. A largura de banda e a latência devem ser ajustáveis ​​para que eu possa descobrir a melhor combinação para executar nosso pacote de software.

Nic
fonte
7
Ótima pergunta! Eu adoraria ouvir algumas respostas relacionadas ao desenvolvimento da Web ASP .NET.
Carl

Respostas:

79

Para o macOS , existe o Condicionador de link de rede que simula largura de banda configurável, latência e perda de pacotes. Está contido no pacote Ferramentas Adicionais para o Xcode . Captura de tela

Jon Colverson
fonte
12
O painel de preferências "Network Link Conditioner" faz parte do Hardware IO Tools for XCode, que você pode baixar em developer.apple.com/downloads
avernet
parece não funcionar com o Genymotion. (Tela preta)
Bruno
1
Download link para versões mais recentes XCode: developer.apple.com/download/more/?q=Additional%20Tools
jstorm31
@ jstorm31 Obrigado. Atualizei a resposta com o nome atual do pacote e o link atual.
precisa saber é o seguinte
37

Há uma excelente descrição de como configurar uma máquina FreeBSD para fazer exatamente isso - leve seu desktop antigo padrão, instale uma NIC adicional e construa.

O artigo está disponível em http://www.freebsd.org/doc/en/articles/filtering-bridges/article.html .

Na etapa 5 das instruções acima, você está ativando um firewall. Para simular apenas uma conexão IP diferente, você pode (por exemplo) fazer o seguinte:

Crie um arquivo /etc/rc.firewall.56kque contenha o seguinte:

ipfw add pipe 1 ip from any to any out
ipfw add pipe 2 ip from any to any in    
ipfw pipe 1 config bw 56Kbit/s   
ipfw pipe 2 config bw 56Kbit/s

E mudar /etc/rc.conf... substituir a linha

firewall_type="open"

com

firewall_type="/etc/rc.firewall.56k"

reinicie e você terá uma ponte de 56K!

Se você estiver trabalhando em um Macintosh, esse sistema operacional possui o ipfw incorporado por padrão. Fiz a mesma coisa roteando o tráfego de rede pelo aeroporto e pela Ethernet, configurando-o para que qualquer coisa que chegue ao aeroporto tenha as mesmas características do que estou tentando imitar. Você pode invocar os comandos ipfw diretamente do terminal e obter os mesmos efeitos.

heckj
fonte
27

No passado, eu usei uma ponte usando a funcionalidade Linux Netem (emulação de rede). É altamente configurável - permitindo a introdução de atrasos (o primeiro exemplo é para uma WAN), perda de pacotes, corrupção, etc.

EDIT: Também existe a interface da Web MasterShaper para controlar as configurações.

Estou notando que o Netem funcionou muito bem para meus aplicativos, mas também acabei usando o WANem várias vezes. O ISO inicializável fornecido (e as imagens do dispositivo virtual) o tornaram bastante útil.

Kris Kumler
fonte
Perfeito para minhas necessidades e disponível imediatamente no meu servidor Ubuntu 14.04!
RobM
21

Charles

Encontrei Charles, o aplicativo proxy de depuração da web, e tive grande sucesso em emular a latência da rede. Funciona no Windows, Mac e Linux.

Charles no Mac

Regulador de largura de banda / simulador de largura de banda

Charles pode ser usado para ajustar a largura de banda e a latência da sua conexão com a Internet. Isso permite simular as condições do modem usando sua conexão de alta velocidade.

A largura de banda pode ser regulada para quaisquer bytes arbitrários por segundo. Isso permite que qualquer velocidade de conexão seja simulada.

A latência também pode ser configurada para qualquer número arbitrário de milissegundos. O atraso da latência simula a latência observada em conexões mais lentas, que é o atraso entre fazer uma solicitação e a solicitação ser recebida na outra extremidade.

DummyNet

Você também pode usar o vmware para executar o BSD ou Linux e experimentar este artigo (DummyNet) ou este.

Eugene Yokota
fonte
2
Charles é um proxy HTTP e, portanto, adequado apenas para testar aplicativos HTTP. Para cada um deles, mas na minha opinião é provavelmente um dos piores softwares que já usei. Eu o usei apenas por um curto período de tempo enquanto tive que trabalhar em um Mac. Para usuários do Windows, recomendo o Fiddler se você precisar de um proxy de depuração HTTP. Infelizmente, não encontrei nada além de Charles para OSX.
12123 Brad
6
Oi Brad. Você pode mencionar que tipo de problemas você teve?
Ante
17

Achei esse pequeno programa interessante para Windows chamado desajeitado . Está no tipo de status alfa, mas parece funcionar bem para mim e é de código aberto.

Edit: Outros notaram que você não pode limitar a largura de banda com desajeitado, e isso é verdade. Você pode adicionar apenas Latência e alguns outros erros relacionados à rede. Isso desqualificará esta resposta como uma resposta válida para a pergunta, no entanto, como eu usei bem quando queria simular uma rede ruim, então a deixarei aqui desde que ela tenha> 0 votos ou semelhante.

Markus
fonte
Como você controla a largura de banda com desajeitado?
user3731622
3
Excelente programa. Apenas o que eu precisava. Eu recomendo. Funciona como um encanto e é super fácil.
Jh62
1
Quando a maioria das pessoas diz "limitar a largura de banda", provavelmente está mais do que satisfeita em simplesmente adicionar grandes quantidades de latência e perda de pacotes, pois elas efetivamente limitam a largura de banda. Além disso, este programa é incrivelmente simples de usar, supera tudo o que eu tentei no Windows.
rola
13

Experimente o WANem

O WANem é um emulador de rede de área ampla, destinado a fornecer uma experiência real de uma rede de área ampla / Internet, durante o desenvolvimento / teste de aplicativos em um ambiente de LAN.

epatel
fonte
1
Eu tentei isso e não consigo fazê-lo funcionar. Por algum motivo, ele não receberá um endereço IP da nossa rede, enquanto outros computadores não tiverem problemas.
22730 Michael Beck
7

Eu tentaria usar o netem no linux. Com ele, você pode simular atrasos adicionais, corrupção, perda de pacotes e duplicação. Até funciona no dispositivo de auto-retorno.

Josh
fonte
Ei, você tem algum comando equivalente para o Windows como netem?
Shashi Ranjan
6

Outro programa do lado do cliente (somente Windows) é o NetLimiter - http://www.netlimiter.com

kaliatech
fonte
2
O Netlimiter é bom, mas acho que apenas baixa largura de banda - não pode alterar a latência?
Nathan
Os planos beta para v3 listavam a simulação de latência como um recurso planejado. Ele foi lançado recentemente e eu não usei ainda para ver se esse recurso tornou no.
kaliatech
Esse recurso não chegou à versão beta 9. Ugh.
cacba
4
Mesmo a versão beta atual (NetLimiter 4) não permite alterar a latência.
influente
5

Eu uso o NetBalancer na minha máquina Windows.

http://seriousbit.com/netbalancer/

Atualizações em 07/10/2017 : A última versão gratuita do NetBalancer é 9.2.7. O programa tem uma data de validade codificada. Antes de iniciar o serviço NetBalancer, você precisa voltar o relógio do sistema antes de 18/10/2016. Veja este artigo para detalhes.

Tony
fonte
Obrigado!! O NetBalancer é a única ferramenta listada nesta página que eu consegui trabalhar e que pode controlar a latência.
influente
4

Eu acho que tcpoderia fazer o trabalho na plataforma baseada em UNIX.

tcé usado para configurar o controle de tráfego no kernel do Linux
http://lartc.org/manpages/tc.txt

Sawan
fonte
3

Para simular uma conexão de baixa largura de banda para testar sites usando o Google Chrome, você pode ir para a guia Rede nas Ferramentas F12 e selecionar um nível de largura de banda para simular ou criar largura de banda personalizada para simular.

user1785960
fonte
1
Obrigado! Caso não consiga encontrá-lo, ele está no console do Chrome, guia Rede, no lado direito do botão "Desativar cache". Seu valor padrão é "Sem limitação".
Alan Willms
1

Existe um produto em http://www.shunra.com chamado VE Desktop que pode ser usado para simular diferentes condições de rede. Permite ajustar latências, largura de banda e perda de pacotes com uma interface simples. A única ressalva é que não é grátis. Espero que isto ajude.

Shreedhar Kotekar
fonte
1

Eu estou procurando uma ferramenta fácil de usar para esse tipo de teste há um tempo. Eu me deparei com isso outro dia: Network Delay Simulator

Se você estiver executando o Windows, verifique isso. Foi super fácil de configurar e seguir em frente, e parece funcionar muito bem. Permite definir largura de banda, latência e perda de pacotes em cada direção. A outra coisa realmente interessante é que você pode definir "Condições de correspondência de fluxo" para afetar apenas o tráfego que você deseja. Ah sim, e é grátis.

Marca
fonte
1

Eu acho que encontrei o que eu preciso. talvez você possa usar o proxy charles ou slowy . espero que ajude.

Moh Hasbi Assidiqi
fonte
1

Dê uma olhada no emulador de rede NE-ONE, que permite configurar largura de banda, latência, perda de pacotes, reordenação de pacotes, duplicação de pacotes, fragmentação de pacotes, congestionamento de rede e muitas outras deficiências, para que você possa criar condições de rede reais no laboratório . Diferentes deficiências podem ser configuradas para o uplink e downlink, para que você possa ter um uplink realmente bom, mas uma experiência de downlink muito ruim, excelente para ver como o aplicativo lida com o enfileiramento TCP, porque os acks não retornam em tempo hábil e a latência geral portanto aumenta!

Há um vídeo de visão geral aqui http://www.youtube.com/watch?v=DwtqlE7LcrQ voltado especificamente para desenvolvedores de jogos, mas mostra do que se trata. O NE-ONE é configurado usando um navegador da Web, então é realmente fácil de instalar e configurar - você não precisa ser um guru da rede :-)

Existe uma versão do hardware - http://www.itrinegy.com/index.php/products/network-emulators/ne-one - ou você pode fazer o download de uma versão do Virtual Appliance (software) executada no VMware ESXi Server. O dispositivo virtual pode ser baixado no Solution Exchange da VMware - solutionexchange.vmware.com/store/products/ne-one-flex-network-emulator

Peter White
fonte
0

O LANforge ICE é um emulador de rede com ênfase em roteamento virtual, instabilidade, corrupção e atraso. Os projetos o usaram para emular links de satélite, conexões de cabo e modem e emulação de wan de alta velocidade (10Gbit). Você pode usar uma GUI Java para construir suas redes virtuais e gerar relatórios muito detalhados do fluxo de tráfego. Os produtos LANforge também oferecem recursos de geração de tráfego: quadro, Ethernet, camada 3 e tráfego com estado (NFS, http). Edições recentes do LANforge também possuem sofisticados recursos de teste de WiFi.

memnoch_proxy
fonte
0

Você pode tentar o seguinte: CovenantSQL / GNTE basta escrever YAML assim:

group:
  - 
    name: china
    nodes:
      - 
        ip: 10.250.1.2
        cmd: "cd /scripts && ./YourBin args"
      - 
        ip: 10.250.1.3
        cmd: "cd /scripts && ./YourBin args"
    delay: "100ms 10ms 30%"
    loss: "1% 10%"
  - 
    name: us
    nodes:
      - 
        ip: 10.250.2.2
        cmd: "cd /scripts && ./YourBin args"
      - 
        ip: 10.250.2.3
        cmd: "cd /scripts && ./YourBin args"
    delay: "1000ms 10ms 30%"
    loss: "1% 10%"

network:
  -
    groups:
      - china
      - us
    delay: "200ms 10ms 1%"
    corrupt: "0.2%"
    rate: "10mbit"

corre ./generate scripts/your.yaml

auxten
fonte