【FPSゲームの敵】バッファブロート問題(ネットワーク機器がデータを溜め込みすぎることで、通信に大きな遅延(ラグ)が発生する現象を改善する)
そのうち、YOUTUBE動画にすると思うんでチャンネル登録もよろしくお願いします。。
記事の内容はバッファブロートについてです。
バッファブロートとは?↓
Bufferbloat (バッファブロート) とは、パケット交換型ネットワークにおける、送信パケットの過剰なバッファリングにより生じる大きな遅延のことである。少なくとも2009年には海外で広く認知され始めており、数々の対策方法も考案され、実装されてきている。
通信経路上に膨大な送信バッファ(特に単純なキュー)が存在すると、輻輳が発生した場合、送信パケットが非常に長い時間に渡って送信バッファに置かれることになる。その結果として、大きな遅延の発生と同時にジッタも大きくなり、端末の輻輳制御までもがジッタによって撹乱され適切に動作しなくなるため、端末間のスループットが大きく低下する。高速化されたネットワークでは、ネットワークを構成する各通信機器において膨大な送信バッファを使用するように設定されていることが多い。このようなネットワークでは、実践的にもVoIP,オンラインゲーム,通常のWeb閲覧等の対話的な通信のレスポンスを悪化させる傾向にあることが知られている。従って、送信バッファとして、単純なキューではなく優先度の高い通信のみ特別に割り込み処理を行う、送信バッファサイズを小さくしてデメリットとなる遅延のみを小さくする、という対策が行われている。
改善してみた結果↓
ここから本題に入ります。
Ping、ジッター、インターネット速度に悪影響を与える可能性のある問題と、それらを改善するための具体的な方法(かなりゲーム特化です)
まずはLANケーブルをcat6aに変える。
Amazonなどで安価で買える、信号が劣化し始めるのはケーブル長が100mを超えてからです。↓10Mのやつ貼っときます。もっと長い、短いは自分で検索してください(大事なのはcat6a規格であること)
で、問題はここから。ゲームにおけるバッファブロート問題(あんまり議題に上がらないよね)
バッファブロートは、インターネットへのアップロード時、またはダウンロード時に発生する遅延の増加を指す。
通常、これが起こるとPingが200以上に急上昇する(一瞬。パケット遅れでゲームカウンターじゃわからない時が多い)
これはゲーム中にも起こることで、あなたが射撃をするそのワンクリックでも発生しているかもしれない。
状況例「急に弾が当たらない」アップロード帯域にバッファが溜まりきって渋滞状態→ゲームの入力信号(撃った、動いたなど)が後回しになる。
Pingは低いのに、遅延が大きくなる=ラグが出る=撃ってもなぜか当たらない(誰もが体験したことあるやつ、背後からしっかりヘッドを狙ったのに透けていくやつね)
どうやって判別できるの?
Pingが安定してるのに、体感ラグがある。
ネット回線が遅いわけではないが、ゲームだけ妙に反応が悪い。
同時に複数デバイスが回線を使っている。
より明確に自分のバッファーブロートをテストするには
Bufferbloat and Internet Speed Test - Waveform
でアカウント登録をしてテストするだけ(無料)
これって割と「技術進化」で起こりやすい。
マウスだって高性能センサーを搭載して快適になっていくが、レポートレートが上がるにつれてPCへの負荷が増え、ピクセルスキップやネガティブアクセレーションを過剰に引き起こしたり。
モニターだって現状は500Hz台なんて出てきてるがデメリットとしてオーバーシュートが酷すぎる点も挙げられる。
順当に技術進化を遂げる一方、必ず課題デメリットが生まれてくる。
それを今どうやって解決しているのか??
単純、メリットの幅を減らして、デメリットの幅を減らす、これに尽きる。
マウスだって飛びが酷い、PCの性能が足りないなら8000Hzから4000Hzに落として使用する。
モニターのオーバーシュートが酷いなら反応速度設定(オーバードライブ)を最速ではなく普通設定にして使用する。V-syncをONにするのも手だろう。
何かを得るには、何かを犠牲にしなくてはいけない(等価交換)思想つよ。
ではバッファブロートとは?様々な原因があるが、一つは
バッファサイズ増加だ。(ネットワークアダプタ等)
メモリサイズは大きい方が良いという通念が主流となってきたことが影響している。
ネットワーク機器のバッファサイズが大きくなることで、パケット廃棄が起こりにくくなるという利点が生まれたが、バッファサイズが大きくなることによるデメリットも同時に生まれた、それがバッファ遅延の増大。
交通量(データ量)が急増(ディスコ+トラッカーサイト+裏では配信を見てる)
駐車場(バッファ)に車(データ)がどんどん溜まり→渋滞発生!
新しく来た緊急車両(=ゲームの入力データ)が 駐車場の渋滞に巻き込まれて遅延
プレイヤーは「なんかラグい……」と感じる
帯域自体は速いのに、応答が遅れる現象=バッファブロート。
バッファブロート(Bufferbloat)は、ネットワーク機器における過剰なバッファリングに起因して、パケットの遅延が著しく増加する現象を指す言葉。2009年前後より、インターネットにおける通信品質劣化の一因として認知されるようになった。
バッファ内でのパケット滞留時間が増大すると、データの到達遅延が拡大し、これに伴い受信確認応答(ACK)の応答時間も遅延する。このACK遅延は送信側の送出タイミングに影響を及ぼし、結果としてスループットの低下を招くこととなった。
速度も速いし、pingもいいのになんかラグい気がするのは、これが原因の場合もある。もちろんルーター側の対策(QoSとかね)もあったが逆に不適切なQoS設定は遅延を増やす。ルーターにCPUもどんどん突っ込んだりしているがユーザー側の使用が激しすぎてボトルネックになっている。
だからこそ個人で対策できるものはしようという話だ(ここまで長かった)
設定に入る前にまず、復元ポイントを作成しておくことを強く推奨。これにより、万が一問題が発生した場合でも、簡単に以前の設定に戻すことができます。(普通に戻せるから大丈夫だけど)PC構成や環境で合う合わないは絶対に存在します。
この設定は過剰に膨れ上がる回線速度を、わざと絞ります。
MTU値だって最適化のために1500から、1492や1454に絞ったりするのと同じ。
本来しっかりチューニングすれば両方900Mbps(ほぼ1.0Gの理論値)叩き出せるが速度よりも遅延しないことが大事。速度なんて300以上は個人では飾り(思想強め)
元が上り、下り50Mbpsしか出てないんだけどって人は無理です。
回線の土台を変えてください(有線にする、ブロードバンドを変える等)
200Mbps以上出ていて、バッファブロート判定がA以下だった人は試してみましょう。改善できるかもしれません。
もし結果が悪化、またはゲームの調子が悪くなった気がする、みたいな状況になってもすぐ戻せます。
では逝こう!!!!!!↓
バッファブロートを修正する方法。
回避策:
コマンドプロンプトを管理者として実行し、コマンドをコピーペーストする方法。これはバッファーブロートを大幅に削減しますが、帯域幅を制限します。
Netsh int tcp set global autotuning=disabled上記を張り付けてエンター。
止めたい、戻したいときは下を張り付けてエンター。
Netsh int tcp set global autotuning=normalUDPトラフィックの高速データグラム送信を有効にする
UDPゲームをプレイする際にTCPを最適化するのではなく、代わりにUDPトラフィックの高速データグラム送信を有効にすることが推奨されている。
これは、シューターゲームでのパケットロスやヒットレジストレーションの改善になる。
設定方法(レジストリの変更)
Windowsの検索メニューでファイル名指定して実行。「regedit」と入力し、管理者として実行します
レジストリエディターで、下のコードを検索バーに貼り付ける。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters上のコードを下の青線の所消して(¥より右側)張り付ける。
新規→DWORD(32ビット)値を選択して名前を↓
FastSendDatagramThreshold
にする。
止めたくなったら今の作ったやつを削除するだけ、(復元オプションでもいいし)
ネットワークアダプターの詳細設定
Windowsの検索メニューで「コントロールパネル」を開きます。
「ネットワークとインターネット」→「ネットワークと共有センター」に進みます。
右側の「イーサネット」をクリックし、「プロパティ」を開きます。
一般設定:
下にスクロールすると、通常4つのチェックボックスがデフォルトでオンになっています。これらはゲームには不要なので、チェックを外します。
「Microsoft TCP/IP version 4」のみをチェックしたままにします(Ipv6を使用している方はMicrosoft TCP/IP version 6もチェック。
「OK」をクリックし、プロパティ画面に戻ります。
電源の管理タブ:
「構成」をクリックし、「電源の管理」タブに移動します。
デフォルトで2つのボックスにチェックが入っていますが、ネットワークカードの省電力機能は不要なのでチェックを外します。
さらにやりたい方は下から(500円買い切り)
詳細設定タブ
ここで、すべてのオフロード機能を無効にします。これにより、ネットワーク処理タスクがネットワークカードではなく、CPUによって直接行われるようになります(この設定ならばオフロード系は切りたい)
さらに、割り込みモデレーション(Interrupt Moderation)とフロー制御(Flow Control)も無効にして、ゲームパフォーマンスを向上させます。
重要な注意: オフロード機能の無効化は、比較的新しく高性能なプロセッサー(CPU)を使用している場合にのみ推奨されます。古いプロセッサー(CPU)を使用している場合は、オフロードを有効のままにして、この手順をスキップしてください。
これらの設定変更を終えたら、「OK」をクリックして設定を保存します。
かなり投資する、良い解決策: SQM(スマートキュー管理)機能を持つルーターを購入すること(QoSの上位互換)
推奨されているルーターは、Amazon Eero Pro 6またはそれ以降の機種。
これらは「optimize for conferencing and gaming」と呼ばれていた機能(最近SQMに名称変更)が適切に機能するため。
購入したら、EeroアプリをダウンロードしてAmazonアカウントでログインし、SQMをオンにすることでバッファーブロートを解消できます。ちなくそ高いです↓
これもあり↓
ゲームなどダウンロードなどを行う際の注意
これらの手順を行うことで、インターネット接続をゲーム向けに最適化し、Pingや遅延を低減できる、が
ゲームのダウンロードとかは遅くなるので、ダウンロードの時だけ↓
Netsh int tcp set global autotuning=normalをコマンドプロンプトで戻せば大丈夫(規定に戻る)。
ダウンロードとかない時はまた↓
Netsh int tcp set global autotuning=disabledをコマンドプロンプトで適用させればいい。
※一度設定したレジストリは変更しなくてよい。
Youtubeにもいろいろ上げますので是非チャンネル登録しといてください。



コメント