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