清水理史の「イニシャルB」

「Pingスパイク」とは何か? Wi-Fiで起こる「遅延」の実態を見てみよう

突発的にRTTが高くなるPingスパイク

 Web会議の映像が一瞬止まる……。オンラインゲームでキャラクターがワープする……。Wi-Fi環境で、こうした一瞬のラグが発生するのはなぜなのか? 少し長めに「RTT(Round Trip Time:往復通信時間)」を取得してみるだけでも、こうした状況の原因が見えてくる。

 有線接続が安定しているという理由、およびWi-Fi環境下で突如として発生する「Pingスパイク」を確かめてみた。

遅延(Latency)とは何か?

 オンラインゲームの快適さを示す指標としてよく使われる「Ping値」。正確には、Pingを使って計測した「RTT(Round Trip Time:往復通信時間)」となる。

 IP通信の状態を確認するための制御メッセージプロトコルとなる「ICMP(Internet Control Message Protocol)」を利用し、手元のPCから宛先に対して「Echo Request」を送信し、相手が「Echo Reply」や「Destination Unreachable」などの返答を返す。この返答内容によってネットワーク状態の確認や、この往復のやり取りにかかった時間を「遅延」の目安として利用する。

遅延とは、端末と宛先の間の往復の通信時間

 光ファイバーを伝わる光の速度は、一般的に約20万km/s、つまり1ミリ秒(0.001秒)に200km進むとされているが、実際には中間に何台ものルーターを経由するなどの理由で、そこまで速いわけではなく、東京ー大阪間(約500km)で約10ms前後、東京ー米国西部(約8800km)間で約100msと言われている。

 例えば、以下のリンクから、Microsoftが公表しているAzureのリージョン間の遅延の目安を確認できるが、「Japan East」と「Japan West」の間は12ms、「Japan East」と「West US」の間は108msとなっている。

▼Azureのリージョン間遅延目安
Azure network round-trip latency statistics

 つまり、東京の端末から大阪のサーバーへリクエストを送信し、そのレスポンスが手元に到達するまでに約10msの遅延があるわけだ。

 正直、10msくらいだと、人間が感じる遅延はほとんどない。個人差はあるが、一般的に遅延が与える影響は下表のようになると想定できる。オンラインゲームなどでも、50ms以下が快適さのひとつの目安となり、100msを超えるとラグなどが気になる可能性がある。

遅延時間の目安
RTT (ms)ネットワークの影響体感の目安
1ms0.001秒理想的な極低遅延ほぼ無視できる
10ms0.01秒リアルタイム通信に影響あり一瞬のラグ
50ms0.05秒応答性の低下を考慮する必要がある少し間がある
100ms0.1秒明確な遅延として対策が必要はっきり遅い
300ms0.3秒通信切断が発生する可能性があるかなり遅い
RTTの目安

「Pingスパイク」とは何か?

 このように、本来、RTTの値は距離(経路)の影響が支配的だが、非常に近い距離の通信、つまり家庭のネットワーク内でも、急激な遅延が発生するケースがある。いわゆる「Pingスパイク」(Pingバースト)と呼ばれる現象だ。本来、低遅延で通信できるはずのネットワークで、突発的に急激に高い遅延が発生する現象となる。

 Pingスパイクは、Wi-Fi、つまり電波を使った無線通信で発生しやすい、というか日常的に発生する。

 端末ごとに占有可能で、しかも全二重通信可能な専用通信経路を利用する有線LANと異なり、無線は複数の端末が、同じ空間、同じ周波数の電波を共有する。このため、通信が競合する可能性がある場合に、通信タイミングや干渉を避ける必要がある。例えば、Wi-Fiでは無線の制御プロセスによって、データを送信する際に、他の端末が電波を使っている場合、その端末が一定時間待機する場合がある。

 こうしたWi-Fiならではの通信事情によって、平常時は、数msに収まる遅延が、突発的(場合によっては定期的)に数十ms、場合によっては数百msにもなることが、当たり前のように発生する。

 主な要因としては以下の5つが考えられる。

1. 待機時間

 Wi-Fiの通信方式であるCSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)では、データ送信前に他の通信がないかを確認し、通信中であればランダムな待機時間が発生する。この待機処理が通信時間を増やす要因となる。ただし、現代のWi-Fiでは、MU-MIMOやOFDMAの条件が整えば同時通信も不可能ではない。

2. 再送制御

 他の家電製品や近隣アクセスポイントからの干渉により電波状況が悪化すると、無線フレーム(MACフレーム)の受信に失敗することがある。Wi-Fiではこのとき自動的に再送が行われるが、それでも回復できない場合、上位層からはパケットロスとして認識される。つまり、再送処理の増加が通信時間の増大につながる。

3. MCSフォールバック

 Wi-Fiは通信状況に応じて、MCSインデックスで規定されている変調方式や符号化率などの情報を基に、通信状況に応じて自動的にパラメーターを調整してリンク速度を決定する。電波状況が悪化すると、より安定した低い速度(変調方式や符号化率を下げる)へ切り替える「MCSフォールバック」が発生する。これにより通信速度は低下するが通信の安定性は向上する。ただし、再送やレート切り替え処理の過程で、通信時間が増加することがある。

4. バックグラウンドスキャン

 無線クライアント(PCやスマートフォン)は、より良い接続先や利用可能なチャネルを把握するため、接続中でも定期的に無線環境を調査する「バックグラウンドスキャン」を実行する。スキャン中は無線チップが一時的に他チャネルへ切り替わり、その間はデータ送受信ができないため、待ち時間や通信時間の増大が発生する。

5. 接続制御(バンドステアリング/ローミング/省電力)

 ネットワーク最適化のためのバンドステアリングやローミング判定により、接続先や利用バンドの切り替えが検討・実行されることがある。この過程では再接続や認証処理が発生し、一時的な遅延や瞬断の原因となる。また、省電力機能(U-APSDなど)により受信タイミングが制御される場合も、応答遅延が増加する要因となる。

実際に遅延を見てみよう

 では、実際にWi-Fiでどのような遅延が発生するのかを見てみよう。

 今回は、アクセスポイントにTP-Link Archer BE260(標準設定のスマートコネクトオン、MLOオフ、MU-MIMOオフ、OFDMAオフ)を利用し、PCとスマートフォンの2台をWi-Fiに接続した状態で、PCから自作のスクリプトを使って、アクセスポイントとの間のRTTを記録した。

 有線接続、無線接続は1階、3階入り口(真上)、3階窓際(最も遠い場所)の3カ所で、それぞれ20分前後RTTの値を記録し、最終的に計測時間を合わせて17分ほどの時間のデータを比較している。

 今回の計測では、New-Object System.Net.NetworkInformation.Pingを使ったPowerShellスクリプトで計測し、内部的にログを記録する処理なども含まれるため、通常のPingコマンドより若干遅延の値が上乗せされている可能性があることをお断りしておく。ただし、今回の目的は、あくまでも通常時とPingスパイクの相対的な比較なので、問題ないと判断した。

▼Ping遅延 比較ビューア
artifact_ping_test.html
※上記のリンク先はGoogleドライブで共有しているHTMLファイル。ダウンロードしてウェブブラウザーで開くことで利用できる

ケース1:有線LANの場合(何も起きない)

 まずは、有線LAN(1Gbps)の状況を見てみよう。一瞬、3msを超えているが、ほぼ2ms台で安定している。低遅延、安定性なら「有線一択」というも納得の結果だ。

有線LANの結果。ほぼ3ms以下で安定しており、何も起きない

ケース2:1階のWi-Fiの場合(速くて安定している)

 次に1階のWi-Fiの場合を見てみよう。ここは、PCとアクセスポイントの距離が3m前後となっており、通信状況としては非常に良好な場所となる。iPerf3による計測であれば2Gbps近い速度も達成できており、「有線LAN越え」と言ってもいい状況だ。

 ただし、遅延で比較してみると、有線よりも、全体的に値が高くなっており、30~40msの値が2カ所、100ms超えも2カ所ある。

アクセスポイントに近い場所でのWi-Fiの結果(青)。下の緑が有線。差が大きいので縦軸を対数スケールにしている

 こういった挙動になるのが、Wi-Fiの遅延の特徴で、この突出した部分がPingスパイクと呼ばれる部分となる。

 なぜ遅くなっているのかは、パケットキャプチャなどで詳細に挙動を調査しないとわからないが、予想としては、30~40msの部分の原因は2~3回連続のリトライが発生している可能性がある。今回は端末が2台つながっているので、その順番待ち、もしくは外部のアクセスポイントからの干渉による待ち時間の可能性がある。

 100msの部分は、定期的に出ているので、チャネルの状況をチェックするバックグラウンドスキャン、さらに多くの再送や待機など、もしくは複数の要因が重複した結果ではないかと想定できる。また、今回のアクセスポイントは、2.4GHz帯と5GHz帯のSSIDが共通のスマートコネクトが有効になっているので、2.4GHz帯と5GHz帯の切り替えを調査している可能性もある。

ケース3:3階窓際(遅いが安定している)

 少し順番を変えて、3階窓際、もっとも遠く、遮蔽物も多く、外部からの干渉も大きい場所を見てみよう。ここは、iPerf3のスループットは、今回のArcher BE260で下り400Mbps前後、製品によっては100Mbps以下になる場合もある過酷な環境だ。

 ただし、遅延という点で見ると、実はそんなに悪くない。確かに、10ms超の遅延が頻発しているが、逆に100ms級のスパイクは記録されていない。これは、電波が弱く、遮蔽物が多い状況、つまりSNR(信号とノイズの比)が悪いことが明らかであることから、早い段階で低いリンク速度(低MCS)に落ち着き、なるべくこの接続を維持しようとしているためではないかと推測できる。

3階窓際単独の結果
3階窓際(黄色)と1階(青)の比較(差が大きいので対数スケールで表示)。3階の方が全体的に遅延が大きいが、100ms級のスパイクは発生しなかった

 低MCSの通信は、変調効率が低く(1ビットあたりのシンボル数が少ない)、エラー訂正性能も高いため、同じフレームを送るのに電波を占有する時間(airtime)が長くなり、全体の遅延が底上げされる。また、電波が弱いため、個別フレームのリトライ確率も高くなる。「ベース送信時間が長い+リトライがたまに混ざる」の合計で、10~20ms帯がコンスタントに発生する状況と考えられる。

 そして、たまたま複数の再送が発生した際に10msを超える遅延として現れ、さらに再送が増えると40msを超えるという状況が想定される。長距離通信では典型的な例と言える。

 100ms級のスパイクがないのは、これも想像だが、まず、チャネルスキャンや2.4/5GHz帯の切り替えなどが発生しにくい可能性がある。電波状況がもともと悪いので、これ以上、動かしようがないと判断されているのかもしれない。そもそも電波状況が悪いため、高MCSから低MCSへの急激な落ち込みも発生しにくい。

 実際、3階窓際では、完全なパケットロス(タイムアウトによる応答なし状態)は1回のみとなっている。つまり、遅いが、安定していて、ゲームやWeb会議では不満が出にくい状況と言える。

ケース4:3階入り口(速いがしばしば切れる要注意ポイント)

 最後は3階入り口だ。ここは、位置的に1階のアクセスポイントの真上で、階段もあるので、電波の通りが良いポイントだ。Archer BE260の結果でもiPerf3で500Mbps前後出るポイントになり、速度は高い。

 が、遅延やPingスパイクという点では、このポイントは結構厳しい。パケットロス(タイムアウト)は何と5回、40ms級も6回あり、100msどころか200ms級も3回も発生している。グラフでは重なって見えるが、「×」のパケットロスと大きな遅延(特に200ms級の部分)が、連続で発生しているのもポイントだ。

3階入り口単独の結果。赤い「×」マークがタイムアウトで応答が返ってこなかったパケットロス地点。200ms級の値も3回ある
3階入り口(赤)と1階(青)の比較(対数スケール)。赤の3階入り口の方が全体的に高いうえに、大きなスパイクが頻発している

 このように、速いのに遅延が大きいというのも、実はWi-Fiではめずらしくない。なぜこのようになるのかというと、まず環境が影響していると考えられる。3階入口は、階段の上なので反射が多い。反射波同士が干渉する状況が発生し、瞬間的に電波状況が悪化するケースがあると考えられる。

 また、この場所は電波状況が良いケースと悪いケースが変動しやすい。距離的には遠いが、遮蔽物自体は少ない、ただし反射も多い。このため、リンク速度が変動しやすいポイントでもある。実際、Windowsのリンク速度を見ても、見るたびに速度が変わっていることがある。

 つまり、高い速度でリンクし、いざデータを送信したものの、失敗して再送。次にレートを落として送信して成功。電波状況が改善したと判断して、またレートを上げる……。といったように、試行錯誤しながら通信している可能性がある。

 こうした状況が重なって、実際にPingが不通になったり、200ms級の遅延が発生したりすると推測できる。

 つまり、iPerf3などの速度は高いが、瞬断、再送が発生しやすいという状況だ。実は、こういう場所がやっかいで、使用感としては「Wi-Fiが調子悪い」、よく切れる、ゲームが止まる、のような話になるのだが、実際にチェックしてみると、そこそこ電波状況は良いし、リンク速度も高く、速度測定しても値はいい。Pingの結果も短時間の計測なら異常なし、となるケースがある。

 今回のように、長い時間RTTを計測すると、パケットロスや大きな遅延が見えてくるのだが、なかなか判断しづらいだろう。

Pingスパイクとどう付き合うべきか?

 Wi-Fiは、そもそもある程度の再送があることを前提として設計されている通信と言えるが、こうして実際に遅延を見てみると、有線との違いや注意点なども見えてくる。

 もちろん、こうしたWi-FiならではのPingスパイクは、設定変更(バックグラウンドスキャンの停止、チャネルの固定、スマートコネクトの無効化など)によって、ある程度の改善は見込める可能性がある。

 しかし、「電波」という伝送媒体を複数システムで共有している以上、Wi-Fiから遅延を排除することは不可能とも言える。リアルタイム性が生命線となるWeb会議や、ミリ秒単位の反応が求められるアクションゲームにおいて、「絶対的な安定」を求めるならば、現時点での最適解はやはり「有線」を選ぶのが最も確実だ。

 とはいえ、こうなると、もう少し、しっかり遅延の原因を見てみたくなったので、通信の中身まで解析し、より詳細に何が起こっているのかを確認したいところだ。環境を整えて、改めてレポートしたいと思う。

清水 理史

製品レビューなど幅広く執筆しているが、実際に大手企業でネットワーク管理者をしていたこともあり、Windowsのネットワーク全般が得意ジャンル。「できるWindows 11」ほか多数の著書がある。YouTube「清水理史の『イニシャルB』チャンネル」で動画も配信中