у меня есть ADSL интернет, и когда есть приложение загрузки в Интернет на полной скорости (например, Skype или Chrome во время загрузки файлов), пропускная способность загрузки становится очень очень медленно. Это означает, что я не могу практически просматривать веб-страницы во время загрузки и даже пинга 8.8.8.8
принимает 2-3 секунды; нормально то приняло бы под 0.06 секундами.
в Mac OS X Mavericks (10.9) и ранее я использовал душил для ограничения исходящего трафика, Чтобы интернет был пригоден во время загрузки.
Throttled использует ipfw для регулирования, который был удален из Yosemite (10.10). Рекомендуемая альтернатива pf
, но ядро Mac OS X не имеет поддержки ALTQ, что позволило бы формировать трафик (так как я пытался, все команды altq просто игнорируются).
Я тоже попробовал Кондиционер Сетевого Соединения приложение, но это не регулирует исходящие пакеты правильно, поэтому Интернет по-прежнему непригоден для использования во время загрузки. Средняя исходящая пропускная способность ограничена, но она колеблется с периодом в несколько секунд.
Итак, как я могу ограничить исходящую пропускную способность? Или как я могу поднять приоритет трафика HTTP, по крайней мере? Могу ли я установить ipfw
Почему? Есть еще идеи?
обновление: конфигурация, которая работает для меня лучше всего до сих пор, чтобы сделать HTTP/HTTPS/SSH неограниченным и ограничить скорость загрузки для всего остального. Это делает в интернете, когда как резервное копирование в облако и торрент-загрузки в то же время. Вот такой сценарий:
#!/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
чтобы проверить, что dnctl правильно настроен, запустите sudo dnctl list
. Вы должны увидеть 2 очереди, первая ограничена, вторая не ограничена:
$ 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