ADSLインターネットを使用していますが、アプリケーションをフルスピードでインターネットにアップロードしている場合(たとえば、SkypeまたはChromeファイルのアップロード中))、ダウンロード帯域幅が非常に遅くなります。つまり、実際に閲覧できません。アップロード中のウェブページや8.8.8.8
へのpingでも2〜3秒かかりますが、通常は0.06秒未満かかります。
Mac OS X Mavericks(10.9)以前では、 throttled を使用して送信トラフィックを制限したため、アップロード中にインターネットを使用できました。
Throttledは、Yosemite(10.10)から削除されたスロットルにipfwを使用します。推奨される代替手段は pf
ですが、Mac OS XカーネルはALTQをサポートしていないため、トラフィックシェーピングが有効になります(私が試したように、すべてのaltqコマンドは単に無視されます)。
Network Link Conditioner アプリも試しましたが、送信パッケージが正しく調整されないため、アップロード中はインターネットを使用できません。平均発信帯域幅には制限がありますが、数秒の周期で手を振ったり振動したりしています。
では、どうすれば発信帯域幅を制限できますか?または、少なくともHTTPトラフィックの優先度を上げるにはどうすればよいですか?どういうわけかipfw
をインストールできますか?他のアイデアはありますか?
Update:これまでのところ私にとって最も効果的な構成は、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つのキューが表示されます。最初のキューは制限されており、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
私は新しい写真アプリでまさにこの問題に遭遇しました。インストール後、photolibraryd
アプリがバックグラウンドですべての写真をアップロードするため、引用したネットワークの混雑の問題が発生します。私もネットワークリンクコンディショナーをインストールし、256Kbpsのアップロード制限を設定しました。
最初はうまくいきませんでした。理由は単純でした。アップロードはTCP接続(ポート443のHTTPS)です。NLCを有効にした後、最初に切断する必要がありました(WiFiを1秒間オフにしました)。その後、新しいNLCルールの下でアップロードが再開され、同時にインターネットを使用できるようになりました。
詳細については、NLCを有効にする前後のPFルールを確認してください。 NLCが有効になっている場合、ダミーネットPFルールがあることに注意してください。そうです、ALTQをサポートする代わりに、AppleはダミーネットでPFを動作させたようです。私は 私のブログでMac OS XのPFについてもう少し を投稿しました。
更新:NLCは必要ありません。ダミーネットのパイプとキューは、dnctl
を使用して直接作成できます。詳細な手順とpf
での使用例については、付属のマニュアルページをお読みください。