Windows7のネットワーク設定を見直して通信速度を改善する方法
2019/11/14更新
Windows7のネットワーク設定において、私が変更している項目を覚書きとして書いておきます。
普段ネットを使っていて、特に速度や安定性に問題がない場合は無理に変える必要はないと思います。
PC初心者は、色々な設定を変更した後で元に戻したい時などに操作を忘れて困るケースがあります。
私自身も変更している項目は覚えていますが、念の為、記事に残しておいた方が確実と言うことで今回書いた次第でございます。
では始めましょう。
一応ですが、私のブログの見づらい画像はクリックすると拡大できます。
目次
SNPの無効化
Windows7は標準でSNP(Scalable Networking Pack)と言う機能が有効化されています。
SNPとはTCPに関するネットワーク処理を、ネットワークインターフェース カード(NIC)およびNICのミニポートドライバーを利用して最適化するためのテクノロジー及びその実装の総称です。
SPNはTCPに関する処理をCPUからNICおよびシステム全体に分散させることで総合的なPCのパフォーマンスアップを期待する機能です。
しかし、まだテクノロジーとして完全な状態ではない為、ハードウェアとソフトウェアの連携において完全な安定性は得られていないようです。
サポートチームも予期せぬネットワーク挙動がある場合はSNPの無効化を推奨しています。参考元の記事は確かに古いのですが、現時点でも私は無効化しています。
レジストリを変更する方法とコマンドプロンプトで変更する方法がありますが、ここではコマンドプロンプトでの変更方法を書いています。
レジストリの変更はそれなりにリスクも伴いますので慣れた人以外はおすすめしません。
SNPの状態を確認する
SNPは、
- RSS(Receive Side Scaling)
- TCP Chimney Offload
- NetDMA(Network Direct Memory Access)
の3つの技術から成り立っています。
まずはそれぞれの項目がどのような状態にあるか確認します。管理者権限でコマンドプロンプトを起動します。
キーボードの(ウィンドウズキー)を押してすべてのプログラムからアクセサリフォルダをクリック。
コマンドプロンプトを右クリックして管理者として実行を選択します。
コマンドプロンプトを起動した後、
と入力し、各3つの項目を確認します。
デフォルトの状態では、
- RSSがenabled(有効)
- TCP Chimney Offloadがautomatic(自動)
- NetDMAがenabled(有効)
になっています。これをそれぞれ無効化していきます。
RSSの無効化
コマンドプロンプトで、
と入力します。OKと表示されれば無効化完了です。
TCP Chimney Offloadの無効化
コマンドプロンプトで、
と入力します。OKと表示されれば無効化完了です。
NetDMAの無効化
コマンドプロンプトで、
と入力します。OKと表示されれば無効化完了です。
無効化できましたら再度、
で確認してみましょう。
3つの項目全てがdisabled(無効)になっていますね。これでSPNの無効化は完了です。
NICのオフロードを無効にする
NIC側のオフロードも無効化していおきます。
コントロールパネル → ネットワークと共有センター → ローカルエリア接続 → プロパティ→ 構成 → 詳細設定と進みます。
下の画面になりましたら、それぞれの項目を手動で無効化します。
- ARP Offload
- IPv4 チェックサムオフロード
- NS Offload
- TCP チェックサムオフロード(IPv4)
- TCP チェックサムオフロード(IPv6)
- UDP チェックサムオフロード(IPv4)
- UDP チェックサムオフロード(IPv6)
これでNIC側のオフロード無効化は完了です。
MTU値の最適化
Wondows7ではMTU値*はデフォルトで最適化されています。
- MTU値
- *MTU値とはMaximum Transfer Unitの略で、1回の転送(1フレーム)で送信できるデータの最大値のことです。TCP/IP網において一般的にIPが運ぶことのできる最大バイト数(IPヘッダー+IPペイロード)を表します。標準的なイーサネットフレームのMTU値は1500です。
このMTU値もコマンドプロンプトで確認できます。
と入力します。すると使用中のネットワークに対するMTU値が表示されます。
この場合、ローカルエリア接続のMTU値は自動で最適化され1500となっているのが分かります。
ただ、もう少し正確に最適なMTU値を設定したい場合は、Speed Guide.netにアクセスすると最適なMTU値が表示されます。
この場合、最適なMTU値は1454となっています。では本当に1454は正確な値なのかを確認します。
コマンドプロンプトで、
と入力してみます。
「パケットの断片化が必要ですがDFが設定されています。」と表示され損失は75%になりました。
次に、
と入力してみます。1426なのは1454からIPヘッダ部(20バイト)とTCPヘッダ部(8バイト)を足した28バイトを差し引くことにより、フラグメント(指定したデータサイズより大きい場合の分割通信)発生なしに通信できるか確認する為です。
このように損失0%で無事通信できていることが分かります。では1427ではどうでしょうか?
1バイト違うだけで「パケットの断片化が必要ですがDFが設定されています。」と表示され損失は75%になりました。
この結果から最適な値は1426であることが分かります。
あとはMTU値を1426に変更するだけです。
※このMTU値は最初に設定されている数値で損失がない場合は変える必要はありません。損失がある場合はコマンドプロンプトで数値を1バイトづつ減らしていきながらながら確認してください。
MTU値の変更
コマンドプロンプトで、
と入力し、idxの部分の数字を確認しておきます。下画像だと11になります。
以下のidx部分を数字に置き換えてコピペしてください。
と入力し、OKが表示されればMTU値の最適化は完了です。
RWIN値の最適化
MTU値と同じくRWIN値*もコマンドプロンプトで調整できます。
- *RWIN値
- RWIN値とはTCP/IP経由でデータ受信する際に、受信確認を送信側に送る間隔を示す値です。TCP/IPでは一定量のデータを受信する度に送信側に受信確認を送ります。つまりRWIN値が回線速度に対して小さく設定されていた場合、送信側に受信確認を頻繁に送ることになります。通信距離が長いなどで、送信側への受信確認に時間がかかる場合も、送信側はまず受信確認を受け取らないと次のデータを送信できないのでタイムロスとなり通信速度が低下します。
現在設定されているRWIN値を確認するにはMTU値で利用したSpeed Guide.netにアクセスします。
下画像のように現在設定されているRWIN値と推奨されるRWIN値の候補が表示されます。
コマンドプロンプトで、
と入力しますが、=の後の設定値に下のいずれかを入力します。
設定値 | 説明 |
---|---|
disabled | 受信ウィンドウを規定値に修正します。 |
highlyrestricted | 受信ウィンドウの規定値を少しだけ超えて拡大できるようにします。 |
restricted | いくつかのシナリオで制限されますが、受信ウィンドウの規定値を超えて拡大できるようにします。 |
normal(規定) | 受信ウィンドウをほとんど全てのシナリオに合わせて拡大できるようにします。 |
experimental | 受信ウィンドウを極端なシナリオに合わせて拡大できるようにします。 |
それぞれ設定値を変更して速度を計測してみました。
設定値 | 速度 | RWIN値 |
---|---|---|
disabled | 140Mpbs | 66304 |
highlyrestricted | 390Mpbs | 66456 |
restricted | 180Mpbs | 66448 |
normal | 290Mpbs | 66304 |
experimental | 280Mpbs | 66304 |
私の環境ではhighlyrestrictedが最も速いと言う結果になりました。時間帯によるトラフィックもありますのであくまで目安としています。
しかし、disabledとrestrictedに関しては、明らかに速度低下が起こっています。
RWIN値からも一番大きい66456が最適であると分かりました。
まとめ
以上が私が変更しているネットワーク設定となります。
これらの設定は普段、ある程度通信が安定している環境で行った方がいいと思います。
通信速度の低下は他にも様々な要因がありますので、まずは消去法でトラブルシューティングを行い、今回の設定も全てデフォルトの状態から試すのが望ましいです。
そうしないとスタート地点(ネットワークトラブルの無い状態)が分からないので後に混乱を招くだけです。
また、フレッツ光の速度が遅いと感じた場合は、過去記事にNGN速度テストについて書いていますので参考にしてください。
以上です。
追記
ネットワーク設定を再び見直しました。その時の記事はこちら。