Como simular conexões lentas com a Internet no mac


145

O que é uma boa solução de software para desacelerar as conexões à Internet no mac para testes e simulações?

Minha principal necessidade é ao testar o código no simulador do iPhone / iOS, portanto, diminuir a conexão para aplicativos ou processos específicos seria ótimo.


Eu achei a resposta aceita (Condicionador de Link de Rede) também uma excelente solução rápida e suja para problemas de bufferbloat.
Robert Tupelo-Schneck 22/03

Respostas:


168

A Apple criou uma ferramenta oficial muito útil para diminuir as conexões de rede no seu Mac para fins de teste.

A preferência do condicionador de link de rede é um download gratuito no Xcode (para Lion e SO posterior). Além disso, o iOS possui uma função semelhante acessível no Xcode e no iOS 6 ou posterior.

insira a descrição da imagem aqui

Versões anteriores do Xcode anteriores à versão 4.3.2 incorporavam uma cópia dessa ferramenta. Agora, você usa o Xcode para fazer o download diretamente de maneira semelhante aos simuladores do iOS e à documentação do desenvolvedor.

Existem 11 perfis embutidos de uma rede Lossy Edge com atraso de 400ms para um modem a cabo. Se você precisar de outros limites, poderá criar perfis personalizados com suas próprias configurações ou também poderá usar- ipfwse conforme descrito no artigo slow ride de Craig Hockenberry , facilite. Ele também menciona o painel Speed ​​Limit de Mike Schrag, que é um download menor. que o Xcode, mas tem menos opções que a ferramenta da Apple.

Isso diminui a velocidade de toda a pilha de rede, para que você não possa acelerar de acordo com o aplicativo sem fazer coisas como instalar lion em uma máquina virtual e definir essa VM com uma pilha de aceleração.


1
: OI ainda tem Xcode e não sabia sobre isso #
Alexander

21
Certifique-se de desligá-lo após concluir o teste!
Jason Salaz

1
Esclarecimento: você realmente precisa fazer o download das ferramentas de IO de hardware da Apple. Veja Instalação Maçãs link de rede Condicionador de ferramentas
daviesgeek

2
O limite de velocidade mencionado abaixo funciona de maneira excelente . Estou usando agora para localhost: 8888 no MAMP.
Anriëtte Myburgh

1
Observe também que o iOS 6 possui o condicionador de link de rede para teste no dispositivo. Acesse-o em Configurações-> Desenvolvedor na seção "Condicionador de link de rede".
21812 Mike Weller

35

O OS X 10.9 e versões anteriores fornecem ipfwe permite definir regras de firewall personalizadas. Crie um canal com largura de banda limitada usando ipfwe você poderá executar seus testes e simulações.

  1. Crie um canal "1" limitado a 500KBytes / s via

    sudo ipfw pipe 1 config bw 500KByte/s
    
  2. Guie todo o tráfego de rede da porta 80 através do pipe "1" usando

    sudo ipfw add 1 pipe 1 src-port 80
    
  3. Quando você não precisar mais do tubo, remova-o da porta usando

    sudo ipfw delete 1
    

De outros

  • Se você deseja definir barreiras de tráfego mais altas, pode usar MByte/s
  • Porta 80: porta padrão para httptráfego não criptografado . Essa porta é usada para a maioria das navegações e downloads. Você deve ficar bem com isso na maioria dos casos.
  • Porta 443: porta padrão para httpstráfego criptografado SSL .

10
infelizmente, o ipfw foi removido no OS X 10.10 Yosemite
igo

Você pode usar o pfctl para acelerar a largura de banda no OS X 10.10+ - spin.atomicobject.com/2016/01/05/…
Eugene A

Adicionei uma resposta abaixo que mostra pfctle mostra o dnctluso.
Ubershmekel

31

O Limite de velocidade é um painel Preferências do sistema para desacelerar intencional e seletivamente portas e domínios específicos.


Gosto que seja mais granular do que a ferramenta XCode mencionada na resposta aceita. Obrigado pela sugestão.
sholsinger 8/09/11

1
Realmente, descobri que "localhost" não funcionava, mudar para o endereço IP 127.0.0.1 fez o truque.
OlliM

4
Speedlimit é disfuncional como de OS X 10.10 desde que a ferramenta firewall que utiliza foi removido: github.com/mschrag/speedlimit/issues/13
Robin

O link para o limite de velocidade está quebrado.
21817 Jeff Holt

A fonte de Limite de velocidade parece ser não mantida agora, mas está disponível aqui e tem um mais atualizado procurando garfo até aqui , embora eu havent testado-lo em tudo
Parques Brad

11

Para adicionar à resposta aceita: parece que você não precisa do XCode, apenas uma conta no site da Apple Developer (mais simples do que baixar o pacote de 2 GB do XCode, se ainda não o tiver).

Vá para https://developer.apple.com/downloads e procure por "Network Link Conditioner" ou "Ferramentas adicionais para XCode", sendo este último o nome do pacote em que ele se encontra.

Para fazer o download via Xcode 8.x:

  • Clique no menu Xcode
  • Vá para Open Developer Tool> Mais ferramentas de desenvolvedor ...
  • Isso abrirá uma página em developer.apple.com (Observação: pode ser necessário fazer login primeiro)
  • Clique no sinal '+' ao lado de Ferramentas adicionais para o Xcode 8.x
  • Clique no URL de download

2
Bem-vindo ao perguntar diferente! Em vez de escrever uma resposta para editar resposta de outra pessoa, basta clicar no editar ou melhorar esta resposta botão abaixo do post que você deseja melhorar .
grg

9

Se você precisar apenas de otimização para o desenvolvimento da Web, recomendo sinceramente Charles . É uma excelente ferramenta para depurar aplicativos HTTP de qualquer maneira e, entre seus muitos recursos, possui a opção Throttle. O software não é barato, mas faz um excelente trabalho.


Na verdade, eu preciso dele para o simulador de iPhone .. e testar conexões a um servidor
aneuryzm

5

Os usuários do Mac OS X 10.10+ precisa usar dnctle pfctl, mas exemplos de uso documentados não são fáceis de encontrar.

# Configure `pfctl` to use `customRule`. 
(cat /etc/pf.conf && echo "dummynet-anchor \"customRule\"" && echo "anchor \"customRule\"") | sudo pfctl -f -

# Define `customRule` to pipe traffic to `pipe 1`.
# Note this is the actual port definition, not a textual comment
echo "dummynet in quick proto tcp from any to any port 443 pipe 1" | sudo pfctl -a customRule -f -

# Define what `pipe 1` should do to traffic
sudo dnctl pipe 1 config delay 10000
sudo dnctl pipe 1 config bw 10Kbit/s

# DO NOT FORGET to undo these when you're done
sudo dnctl -q flush
sudo pfctl -f /etc/pf.conf

Se você quiser dar tudo de tudo e moldar tudo o que pode usar:

echo "dummynet in quick proto tcp from any to any pipe 1" | sudo pfctl -a customRule -f -

Acredito que isso também afeta os pipes do host local, que diminuíram a velocidade da depuração do código vs, portanto, lembre-se disso.


4

Você também pode usar o encanamento ipfw para diminuir a velocidade da sua rede.

Primeiro, configure um "canal" virtual para limitar a taxa de transferência para 800 KB / s:

ipfw pipe 1 config bw 800Kbit

Em seguida, você pode configurar regras para empurrar o tráfego através desse canal (canal 1). (portas 6881-6890 sendo tráfego bittorrent)

ipfw add 10 pipe 1 tcp from any to me 6881-6890
ipfw add 11 pipe 1 tcp from any 6881-6890 to me

Aqui está outro exemplo para limitar o tráfego a 10Kbit / s de um endereço IP específico:

ipfw pipe 2 config bw 10Kbit
ipfw add 15 pipe 2 ip from me to 64.81.84.114

(Fonte)


O ipfw foi removido no OSX 10.10
Ben Wheeler

-1

Para o XCode 10.2, em Mais ferramentas de desenvolvedor - Ferramentas adicionais para o XCode 10.2, você encontrará o Network Link Conditioner.


Como esta solução difere das respostas já fornecidas?
Nimesh Neema

Eu baixei por engano as ferramentas de hardware, mesmo que fosse para a versão antiga do XCode, achei que funcionaria porque não a vi para uma versão mais recente. Em nenhum lugar está escrito que, para o novo XCode 10.2, eu tenha que escolher Ferramentas Adicionais para obter o condicionador de link de rede mais recente. Isso é mencionado aqui para que outros desenvolvedores não percam seu tempo. Se você achar que não é diferente dos outros, menos quinze vezes. Eu fiz isso para que outros
obtenham

Seria realmente útil para quem lê esta resposta, se você puder editar sua resposta e incluir essas informações cruciais. Além disso, muitos usuários acham que ter instruções claramente escritas e passo a passo realmente valiosas.
Nimesh Neema 17/04

@NimeshNeema Acho que todo o desenvolvedor sabe na comunidade que você pode encontrar essa ferramenta em Mais ferramentas de desenvolvedor. Eu escrevi os passos. Acho que não, devo mencionar mais detalhadamente.
Kiran Jasvanee 17/04

É totalmente bom e depende de você escolher como escrever uma resposta. Os mencionados são práticas geralmente seguidas em vez de uma regra :)
Nimesh Neema 17/04
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.