limitando a largura de banda de upload no Mac OS X Yosemite (10.10)

5

Eu tenho internet ADSL e, quando há um aplicativo carregando a Internet a toda velocidade (por exemplo, Skype ou Chrome durante o upload de arquivos), a largura de banda de download fica muito lenta. O que significa que não consigo navegar praticamente nas páginas da web durante os envios e até mesmo o ping de 8.8.8.8 leva de 2 a 3 segundos; normalmente isso levaria menos de 0,06 segundos.

No Mac OS X Mavericks (10.9) e versões anteriores, usei regulado para limitar o tráfego de saída, para que a Internet fosse utilizável durante uploads.

O Throttled usa o ipfw para otimização, que foi removido do Yosemite (10.10). A alternativa recomendada é pf , mas o kernel do Mac OS X não tem suporte a ALTQ, o que permitiria a modelagem de tráfego (então, como tentei, todos os comandos altq são simplesmente ignorados).

Eu também experimentei o aplicativo Condicionador de link de rede , mas isso não acelera os pacotes de saída corretamente, então a Internet ainda é inutilizável durante os uploads. A largura de banda média de saída é limitada, mas está oscilando / oscilando com um período de alguns segundos.

Então, como posso limitar a largura de banda de saída? Ou como posso aumentar a prioridade do tráfego HTTP pelo menos? Posso instalar ipfw de alguma forma? Alguma outra ideia?

Update : A configuração que funciona melhor para mim até agora é tornar o HTTP / HTTPS / SSH ilimitado e limitar a velocidade de upload para todo o resto. Isso torna a Internet utilizável quando o backup em nuvem e o carregamento de torrent são feitos ao mesmo tempo. Aqui está o script:

#!/bin/bash

# Reset dummynet to default config
dnctl -f flush

pfctl -F all

# Compose an addendum to the default config; creates a new anchor
(cat /etc/pf.conf &&
  echo 'dummynet-anchor "my_anchor"' &&
  echo 'anchor "my_anchor"') | pfctl -q -f -

# Configure the new anchor
cat <<EOF | pfctl -q -a my_anchor -f -
no dummynet quick on lo0 all
dummynet out all pipe 1
dummynet out proto icmp all pipe 2
dummynet out proto tcp to any port 443 pipe 2
dummynet out proto tcp to any port 80 pipe 2
dummynet out proto tcp to any port 22 pipe 2
EOF

# Create the dummynet queue
dnctl pipe 1 config bw 30Kbyte/s queue 50
dnctl pipe 2 config queue 50

# Activate PF
pfctl -E

Para verificar se o dnctl está configurado corretamente, execute sudo dnctl list . Você deve ver as duas filas, a primeira é limitada, a segunda é ilimitada:

$ sudo dnctl list
00001: 240.000 Kbit/s    0 ms   50 sl. 1 queues (1 buckets) droptail
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
  0 udp         192.168.1.XX/XXX   XX.XX.XX.XX/XXX   1372  1517617  6 8010  96
00002: unlimited    0 ms   50 sl. 1 queues (1 buckets) droptail
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
  0 tcp         192.168.1.XX/XXX   XX.XX.XX.XX/XXX     27     4557  0    0   0
    
por psmith 18.11.2014 / 07:52

1 resposta

2

Encontrei exatamente esse problema com o novo aplicativo Fotos. Após a instalação, um aplicativo photolibraryd carrega todas as fotos em segundo plano, causando os problemas de congestionamento da rede que você cita. Eu também instalei o Condicionador de Link de Rede e configurei um limite de upload de 256Kbps.

No começo, não funcionou. O motivo foi simples: o upload é uma conexão TCP (HTTPS na porta 443). Eu tive que desconectar primeiro (eu desliguei o WiFi por um segundo) depois de habilitar o NLC. Depois disso, os uploads são retomados sob a nova regra de NLC e eu posso usar minha internet ao mesmo tempo.

Para mais informações, dê uma olhada nas regras do FP antes e depois de ativar o NLC. Observe que quando o NLC está ativado, você tem uma regra PF dummynet ?! É isso mesmo, em vez de apoiar o ALTQ, parece que a Apple fez o PF funcionar com o dummynet. Eu postei um pouco mais sobre PF no Mac OS X no meu blog .

UPDATE: NLC não é necessário. Canais e filas de dummynet podem ser criados diretamente com dnctl . Leia a página man acompanhante para obter instruções detalhadas e exemplos de uso com pf .

    
por 09.03.2015 / 21:14