カテゴリー
IT Tips

Windowsのネットワークを高速化する方法

※2018/04/28 手順3.5 WIndows10(1703)以降でのアドオン輻輳制御プロバイダの変更例を書き直しました
※2018/06/11 回線速度計測サイトを変更しました
※2018/06/27 TCP Chimney Offloadの補足と電源設定の説明を追加
※2019/04/24 手順7「Windows Update Delivery Optimization」の設定を追加
※2019/09/25 レジストラ中のパスを修正<(_ _)>不備をお詫び申し上げます

WindowsXP以降のOSの場合、イーサネットコントローラのチェックサムが有効になっている事でネットワーク速度が重たくなっていることがあります。
元々チェックサムは、通信パケットの整合性をチェックする為の機能で、通常は安全上ONに設定されています。
これらの設定を無効化し、OSのネットワーク速度最適化機能の設定を変更することで、ネットワーク速度を改善出来るかもしれません。

1.スタートメニュー→コントロールパネル→ネットワークと共有センター→使用しているネットワークアダプタ→プロパティ→構成く(別ウィンドウ)→詳細設定
以下の項目をすべて無効とする。
(下記にない項目は飛ばしてOK)
・IPSec オフロード
・IPv4チェックサム オフロード
・TCPチェックサム オフロード(IPv4)
・TCPチェックサム オフロード(IPv6)
・UDPチェックサム オフロード(IPv4)
・UDPチェックサム オフロード(IPv6)
・ジャンボフレーム
・受信側スケーリング
・大量送信オフロード(IPv4)
・大量送信オフロードv2(IPv4)
・大量送信オフロードv2(IPv6)

1.5.上記詳細設定で、下記を以下の設定に変更
・速度とデュプレックス→1.0Gbps フルデュプレックス
・WOLとシャットダウンリンク速度→速度低下ではない

2.ネットワークアダプタの自動メトリックを手動で設定
・スタートメニュー→コントロールパネル→ネットワークと共有センター→使用しているネットワークアダプタ→プロパティ→インターネットプロトコル 4(TCP/IPv4)のプロパティを開く。
・出てきたプロパティの下部にある「詳細設定」を開く。
・出てきた画面の一番下の「自動メトリック」のチェックを外し、値を「10」と入力する
※1 プライベートIPアドレスが固定の場合、上記画面のデフォルトゲートウェイ欄からゲートウェイのIPアドレスをクリックし「編集」を押す→自動メトリックのチェックを外し、値に「10」を入れる。
※2 ワイヤレス等ネットワークアダプタを複数使っている場合、各ネットワークアダプタ別のメトリック値に優先順位をつけて11~20辺りの値をつけること。

3.ネットワーク自動最適化機能のレベルを変更する。
・DOSプロンプトまたはPowerShell(どちらも管理者用)を開く。
・以下のコマンドを入力する。

#Receive Side Scaling(RSS)の無効化
netsh int tcp set global rss=disabled

#TCP Chimney Offloadの無効化
#※Windows10 Version 1804以降では使用できません
netsh int tcp set global chimney=disabled

#Network Direct Memory Access(NetDMA)の無効化
netsh int tcp set global netdma=disabled

#アドオン輻輳制御プロバイダーの切り替え
#Windows10 Version 1703(Creators Update)以降の方は、手順3.5を参照
netsh interface tcp set global congestionprovider=ctcp

#受信ウィンドウ自動チューニングレベルの変更
netsh int tcp set global autotuninglevel=highlyrestricted

#(上記で効果が得られなかった場合)
netsh int tcp set global autotuninglevel=restricted

#設定反映の確認
netsh int tcp show global

#各種設定を初期状態に戻す場合
netsh int tcp set global default

3.5.Windows10 Version 1703(Creators Update)以降でアドオン輻輳制御プロバイダーをCUBICにする方法
・以下をDOSプロンプトまたはPowerShell(どちらも管理者用)で実行

reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v TcpFastopenKey /t REG_BINARY /f /d 0123456789abcdef0123456789abcdef
netsh int tcp reload

・アドオン輻輳制御プロバイダーをCUBICにする

netsh int tcp set supplemental template=internet congestionprovider=cubic

・再起動後、設定反映を確認する

netsh int tcp show supplemental

4.レジストリエディタで、ネットワークデバイスのチェックサムをOFFにする。
・スタートメニュー→ファイル名を指定して実行→regedit

5.レジストリエディタで下記のパスに移動し、新規DWARD値を作成する(10進数で)。
・HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\windowsNT\CurrentVersion\NetworkCards\{数字}
上記番号の何れかにイーサネットアダプタの名称が書かれたDWARD値があるので、そのパス中のキー「ServiceName」中のイーサネットデバイスのインターフェースIDをメモる。

・HKEY_LOCAL_MACHINE\SYSTEM\CorrentControlSet\Services\Tcpip\Parameters\Interfaces\{先程メモったインターフェースID}」
このパスの中にDWARD値「MTU」を作り、10進数で「1454」と値を入れる。

※MTUの調べ方は、下記コマンドをDOSプロンプトで(size)の値を1500上限に変えながらパケットがパスされるかチェック。
最適値+IPヘッダ(20byte)+Etherフレーム(8byte)がMTUのサイズとなる。
(ジャンボフレームに対応していない場合、恐らく1426byteになるだろう。これに28を足すと1454となる。)

ping -f -l (size) -n 1 www.nic.or.jp

・HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
上記パス中のDWARD値「DisableTaskOffload」(見つからなかった場合、新規作成)の値を「1」にする。

・HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters
上記パス中に下記の通りの名前でDRAWD値を作成し、値を10進数で入力する。
– DefaultReceiveWindow:260176
– DefaultSendWindow:260176
– LargeBufferSize:32768
– MediumBufferSize:6016
– SmallBufferSize:256
– TransmitWorker:32

※下記のコードで「Parameter.reg」を作成し実行しても可能。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"DisableTaskOffload"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters]
"DefaultReceiveWindow"=dword:0003F850
"DefaultSendWindow"=dword:0003F850
"LargeBufferSize"=dword:00008000
"MediumBufferSize"=dword:00001780
"SmallBufferSize"=dword:00000100
"TransmitWorker"=dword:00000020

5.電源のパフォーマンスを調整する
コントロールパネル→ハードウェアとサウンド→電源プランの選択またはカスタマイズ
→高パフォーマンスを選択

※Windows10 Version 1703(Creators Update)以降では「高パフォーマンス」の選択肢がない場合があります。
そこで、DOSプロンプトまたはPowerShell(どちらも管理者用)で下記を入力し
再起動後、上記の電源プランを再設定。

powercfg -setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c

6.Windows Update Delivery Optimization(分散ダウンロード)の無効化
※Windows10限定

スタートメニュー設定→更新とセキュリティ→配信の最適化

→他のPCからDLを許可する
→Windows10端末を複数台所持:「オン」→「ローカル ネットワーク上のPC」
→Windows10端末を1台のみ所持:「オフ」

7.インターネットセキュリティソフト(若しくはアンチウイルスソフト)を常駐させている場合、WindowsDefenerの自動スキャンをOFFにする。

8.再起動

さて、ネットワーク速度が改善されたかな?
もしあまり改善されていないのなら、ブラウザのネットワーク設定を見なおしてみましょう。
それでもダメなら、屋内配線の見直しやルータの設定とファームウェア更新確認、プロバイダのDNSサーバが生きているかの確認等をしてみましょう。
最悪、回線事業者のサポートダイヤルで回線速度のリモートチェックを依頼し
プロバイダなしでの速度が十分に出ていたら、今ご利用のプロバイダを疑いましょう。

カテゴリー
IT Tips

Linuxのネットワーク高速化

/etc/sysctl.confの末端に以下を追加し、OS起動時にも起こされる「sysctl -p」で反映。
※ディストリビューションにより、使用できないコンフィグがあります、エラーが吐かれた部分は飛ばしてOK。
2019/07/09 大幅改訂

#/etc/sysctl.conf最下行に以下を追加
net.core.netdev_budget = 50000
net.core.netdev_budget_usecs = 5000
net.core.netdev_max_backlog = 100000
net.core.optmem_max = 65536
net.core.rmem_default = 1048576
net.core.rmem_max = 16777216
net.core.somaxconn = 1024
net.core.wmem_default = 1048576
net.core.wmem_max = 16777216
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.log_martians = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.icmp_echo_ignore_all = 1
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_abort_on_overflow = 1
net.ipv4.tcp_ecn = 1
net.ipv4.tcp_fack = 1
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_intvl = 10
net.ipv4.tcp_keepalive_probes = 6
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_low_latency = 0
net.ipv4.tcp_max_syn_backlog = 30000
net.ipv4.tcp_max_tw_buckets = 2000000
net.ipv4.tcp_moderate_rcvbuf = 1
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_orphan_retries = 3
net.ipv4.tcp_rfc1337 = 1
net.ipv4.tcp_rmem = 4096 1048576 2097152
net.ipv4.tcp_sack = 1
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.udp_rmem_min = 8192
net.ipv4.udp_wmem_min = 8192
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.accept_redirects = 0
net.ipv6.conf.default.disable_ipv6 = 1

#ネットゲームやストリーミングサービス等でラグ落ちが気になる場合、↑にあるこのコンフィグ値を入れ替える
net.ipv4.tcp_fastopen = 1

#コンフィグ編集後、「sudo sysctl -p」を実行
#NerWorkManagerを使用している場合、通信デュプレックスを1Gbpsに設定。
#もし上記を使っていない場合、「/etc/network/interfaces」最終行に以下を追加

up sleep5; /sbin/ethtool -s enp1s0 autoneg off speed 1000 duplex full

#sudo systemctl restart networking