【暫定版】Windowsの通信速度を速くなるようにする:2017年08月15日版 改訂22回目

◆始める前に

必要なもの:管理者権限、コマンドが読める事、「拡張子」の存在と変更方法

|| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
|| ○ 自己責任
|| ○ 異常が発生したら元に戻せるようにしておく
|| ○ 望む結果が出るまで試行錯誤する
|| ○ 結果が出ないなら最善を見つけて妥協する ←コレが大体最善の結果
|| ○ 情報は暫定版なので内容は変わります

|| ○ ココを読み飛ばした人には救済措置はありません
|| ○ ココを熟読しても救済措置は特にありません

|| ○ 私のマシンはFast EthernetなのでGigabit Ethernetは未検証です

||

|| ◆ 現在の結論 

|| ○ TCPWindowSizeを弄るよりDefault Receive WindowとDefault Send Windowを弄るほうがいい

|| ○ AFDとTCPGPを弄ると簡単だった

||

||                                                 Λ_Λ
||                                             \ (゚ー゚*,) キホン。
||                                              ⊂     ⊂ |
||_________________      | ̄ ̄ ̄ ̄|

◆事前事項

1, Gigabit Ethernetではまともな検証はできていない。

2, ジャンボフレームについては完全に無検証です。

3, MTU最大値(1500)で検証しています。

4, TCPGP = TCP グローバルパラメーター

Windows7ではRWINを編集しても無意味です。

Windows XPではRWINを変更するとTCP/IP Analyzerで明らかな値がでます(検証済み)。

全文読むのが面倒な場合は以下をコピペしてバッチファイルを生成して管理者権限で実行してください。

ただし責任は負いませんし、実行後は元に戻せません。

★AFDTCPGPの設定全部

@echo off
rem AFD buffer size (byte)
rem buffer type |default size |better size?
rem Large |4096 |16384 32768
rem Medium |1504 |2048 ~  4096
rem Small |128 |256 ~   512

rem AFD buffer size
set Large=16384
set Medium=4096
set Small=512

rem AFD Default Receive Windws size (byte)
set DRWIN=5955584

rem AFD Default Send Window size (byte)
set DSWIN=131072

rem TCP global parameter RWIN auto tuning level.
rem nomal = default size.
rem highlyrestricted = big than default size.
rem restricted = many big than default size.
rem experimental = many many big than default size. however likely to be unstable.
set LEV=restricted

rem AFD set
set reg1="HKLM\SYSTEM\CurrentControlSet\services\AFD\Parameters"
reg add %reg1% /v DefaultReceiveWindow /t REG_DWORD /d %DRWIN% /f
reg add %reg1% /v DefaultSendWindow /t REG_DWORD /d %DSWIN% /f
reg add %reg1% /v LargeBufferSize /t REG_DWORD /d %Large% /f
reg add %reg1% /v MediumBufferSize /t REG_DWORD /d %Medium% /f
reg add %reg1% /v SmallBufferSize /t REG_DWORD /d %Small% /f
reg add %reg1% /v TransmitWorker /t REG_DWORD /d 32 /f

rem TCP global parameter
netsh int tcp set global rss=disabled chimney=disabled netdma=disabled dca=disabled autotuninglevel=%LEV% congestionprovider=ctcp ecn=enabled timestamps=enabled

set reg2="HKLM\System\CurrentControlSet\Services\Tcpip\Parameters"
reg add %reg2% /v Tcp1323Opts /t REG_DWORD /d 3 /f
reg add %reg2% /v DefaultTTL /t REG_DWORD /d 64 /f
reg add %reg2% /v EnablePMTUDiscovery /t REG_DWORD /d 1 /f
reg add %reg2% /v EnablePMTUBHDetect /t REG_DWORD /d 0 /f
reg add %reg2% /v SynAttackProtect /t REG_DWORD /d 2 /f
pause
exit

#### ここから下は本気の人以外は読まなくていい ####

★ドライバ一覧

基本的にはコンピューターを生産している会社が配給していますが、存在しない場合は直接探してください

Realtekのドライバはこちら

Intelのドライバはこちら

Intel Driver Update Utilityが使えない場合は手動検索のこちら

Qualcomm Atheros及びAtherosのドライバはこちら

Marvellのドライバはこちら

会社がわからない場合はこちら

◆現在のパソコンの通信状態を調べる

通信の状態を見る
TCP/IP Analyzer

通信速度測定 要Java(Javaの脆弱性に注意してください)

速度測定システム Radish Networkspeed Testing

Gigabit Ethernetでは帯域幅の余裕がありすぎるので正確な測定はできません

回線速度は近く、チューニング具合を見る場合は遠くを選択してください。

他の通信が発生していない状態で行なってください。正確な値がでなくなります。

未確認ですが

WindowsでGbpsクラスの回線で速度が出ない場合のチェックポイント

▼SNPについて

ネットワークを最適化する機能で、OSとハードウェア両方が対応している必要がある。

だが多くのIT系サイトや個人サイトでは無効が推奨されている。

またNICがSNPの機能に非対応の場合、不具合が発生するらしい。

詳細や細かい事はこちらこちらから。

▼WindowsのSystemu側のSNP設定

★パラメーター確認用コマンド(管理者権限不要)

netsh int tcp show global

pause

exit

★SNPを全部無効にするコマンド
@echo off
set dis=disabled

netsh int tcp set global rss=%dis% chimney=%dis% netdma=%sid%
exit

★SNPのパレメーターを自由に変更するためのコマンド

既定に戻す=default 有効=enabled 無効=disabled

Chimneyオフロード状態のみ自動=automaticが使用可能

@echo off

set rss=default
set chimney=default
set netdma=default

netsh int tcp set global rss=%rss% chimney=%chimney% netdma=%netdma%
exit

▼NIC側のSNP設定
チェックサムオフロードど付く項目は大昔(Windows 2003年 Server)から有効らしいのでそのまま。

ただし、一括送信オフロードという項目は「無効」にしてください。

>これはパケットが貯まってから(一括)送信しようとする機能です。

>ネットワークの負荷が減りますが応答速度が低下します。

詳細はwikipediaを参照してください。

ベンダによって名称が異なるので別途確認してください。

受信側スケーリング(Receive-Side ScalingまたはRSS):CPU処理を分散させる機能。

割り込み加減:割り込みを加減することでCPU負荷を下げる機能。

割り込み調停:「割り込み加減」と同じ。

割り込みモデレーション:「割り込み加減」と同じ。

別記

SNPは10Gbitの回線や大きいデータでないと意味がないらしい

>Microsoftの開発者の話によると、変なバグがあるらしい。

不具合や速度低下の原因になるそうです

ネットゲームとの相性が悪いそうです

▲SPNについて終わり

◆ここから本文

1. 下準備前にやる下準備

▼ドライバについて

必要なもの:ドライバを発見する気力

NICのドライバは可能な限り最新のものを使用する。

販売側と配給側のどちらのドライバを使用するのかは各自に任せます。

トレンドマイクロ社のウイルスバスターは使用しないでください。

チューニングしても成果が出ない可能性があります。

2. 下準備

▼Qosについて

必要なもの:勇気

外すだけで20%ぐらい良くなるらしいQoSは使わないのでチェックを外す。

アンインストールしてもいいがアプリによっては不具合があるらしい。私は不具合に遭った事はありません。

2-1. NICの設定をいじる

必要なもの:デバイスマネージャーを開いてハードウェアの設定を変更できること

有線LANについてはこちらを参考にしています。

無線LANについてはこちらを参考にしています。

送信と受信のバッファは最大値に。

>数値が大きいほどネットワーク通信に貢献します。

>数値が低いとネットワーク通信に支障を来します。

フロー制御(コントロール)「有効」

>送信と受信が分かれている場合は両方「有効」に。

優先度やLANの仮想化はNICに判断させたくないので「無効」に。

2-2. 無線機の設定 (使わないなら設定不要)

Radio(無線のこと)は「有効」にする

オン・オフの二択設定は基本的に全部「無効」

節電系はご自由に

WMMは全部有効か?

アクセスポイントでWMMが使えないなら無意味

>優先度の高いサービスのトラフィックが良くなる

>>ネトゲは優先度の高いサービスに含まれません

>>>無線で応答速度が必要な事をしないでください

PS Pollにする

混信モードは「個別CTS」

ローミングは最大値にする

使用する周波数帯は自動でいい

>周波数帯に問題があるなら使用するバンドを強制する

2-2-1. intelの無線機にある設定 

IEEE802.11n モードは有効

>有効でないとIEEE802.11nが使えない

チャンネル幅が20MHzに制限されている場合は最大値か自動にする

>150Mbps以上を出すにはチャンネル幅が40MHz以上必要です

チャンネル非互換は無効にする

>遅い回線を使用しなくなります

NICの設定後はNICの再起動が必要(Windowsの再起動ではない)
通常はOKでNICのドライバが無効になり有効になります

3. コマンドを使用してレジストリやSystemを直接弄る

必要なもの:バッチファイルを作成・編集できること

コマンドプロント(cmd.exe)を管理者権限で起動してコマンドを実行するか、バッチを管理者権限で実行してください。
コマンドを実行すると元には戻せません。

★いろいろ確認用コマンド

@echo off
set reg=reg query "HKLM\System\CurrentControlSet\Services\Tcpip\Parameters"  /v
netsh int tcp show global
netsh int tcp show heuristics
%reg% Tcp1323Opts
%reg% DefaultTTL
%reg% EnablePMTUDiscovery
%reg% EnablePMTUBHDetect
%reg% SynAttackProtect
pause

★メモ

参考

WindowsのSNPについて

NICの有線LANについて

NICの無線LANについて

NICのEEEについて

WindowsでGbpsクラスの回線で速度が出ない場合について

regファイルで編集する場合は16進法が使われる
reg addでは10進法を使う
reg queryでは16進法で表示される

にしてもいつになったらIPv6になるんだ・・・

 

ディスカッション情報


最終更新日 2019年9月19日 表示 31,261 適用先:

もう一つのディスカッションでも返信しましたが、冒頭の注意書きの部分ですが、ユーザーの方々にしっかり理解していただくために、少し改良できるのではないでしょうか?

例えば、

注意

充分な知識を持たないで、レジストリやシステムプロパティの詳細を編集することは危険です。

十分理解しないで編集した場合、異常(Windowsが起動しなくなったとか)が発生する可能性があります。初心者の方は特に注意して以下の説明を参考にしてください。

いかがでしょうか?