Wiresharkとゲーム

オンラインゲームをプレイしているとどうもおかしい。
Wiresharkで見てみると、なにやら変に見える。どうするか。

というページです。
当時の日記/記事にどういうわけかアクセスが多かったので、役に立たないことを承知の上で多少書き直したものです。

ログインできない、ラグがひどい(位置がずれる)などなど、オンラインゲームをプレイしていると大体一度は遭遇します。こんなとき、Wiresharkでキャプチャするといろいろわかります。

もう少し技術的に細かい話はWiresharkとTCPのエラーに書きました。


TCP Retransmission / TCP Previous Segment Lost / TCP Dup ACK

黒い背景に”TCP Previous Segment Lost”だの”TCP Dup ACK”と出たケース。
これはLANカード(NIC)から外側、ゲームサーバまでのどこかがおかしいケースです。

tcp-retransmission
TCP Retransmissionの例

(1)PC – (2)HUB – (3)ルータ – (4)ONU – (5)回線 – (6)ISPとか – (7)ゲームサーバ

経験的にまず疑わしいのは(3)ルータと (7)ゲームサーバです。

(3)ルータについては再起動してみたり、ファームウェアを更新してみたりします。可能ならほかのルータを使ってみます。
あとはMTUの設定がおかしいケースも考えられるので、とりあえずそこそこ小さく(1200くらい)にしてみるとか。

(7)ゲームサーバについては……サーバ(運営会社)をどれくらい信用するかによります。

(2)は無さそうに見えて結構ある。これもとりあえず電源を入れなおしてみればよいでしょう。

2005年当時に遭遇したケースは、マビノギにログインはできるがキャラクタ選択ができないというもの。(本ページ末尾参照)
問題が発生するタイミングでMTU値を変更するという強引なことをやって解決していますが、その後キレてないところを見ると、きっとルータがポンコツで自然に直ったのでしょう。


RSTが出る

赤い背景で”RST”が見えるケース。しかしこれは通常時でも出るものなので異常とは限らない。

tcp-rst
TCP RSTの例

特定のサーバorポートへの接続だけができない、つまりゲーム内なら、フレンドのリストが見えないとか、一部の機能だけが使えないという形で見えてきます。

実際にあったケースとしてはDefiance(正しくはGlyph Client)にログインできないというもので、IP BANされていました。
当然IP BANされるようなことはしていませんので、VPNなんかを駆使してサポートに連絡、結局、別のIPアドレスから接続してくれと言われ、ルータを再起動して解決しました。


 

 


おまけ

2005/08/04 00:44の日記”まびと MTU”より。あまりに対処がひどいので、当時の日記を原文ママで残しておきます。

暇なときにだらだらとマビノギをプレイしてるわけだけど。
ここ数日ちょっと違う環境でプレイしようとすると、ログイン後に固まる。
仕方ないから VPN を経由して遊んでると、遠くをまわってるおかげでレイテンシが大きくなって大変。
前から時々なってたので、ちょっと原因調査を。

現象:ログイン後、キャラクター選択をして「ワールドに接続しています」でブラックアウトして固まる
再現性:100%
ルータ:MacOS X 10.1 on PowerBook G3
回線:ADSL
クライアント:Windows XP Home Edition (chill)

チェックその1。この環境では普段は無線なので、有線に変更。結果、変わらず。
その2。ファイアウォール類の確認 or 無効化。ルータのファイアウォールを全無効化、Windows ファイアウォールも落とす。結果、変わらず。
ここまでは定番のチェック。
その3。Ethereal でパケットキャプチャ。結果、時々 TCP 層で再送が発生していることがわかり、件の箇所では TCP Previous segment lost って…。
で、segment lost なら再送すればいいものを、そのまま。で、ここで固まってる模様。
ほかの箇所では segment lost の通知に対してちゃんと Retransmission をしてるんだけど、ここだけは逆で Retransmission がなぜか先に。まあ、1秒の ack タイムアウトのせいなんだけど。

というわけで、Ethereal 先生の活躍によって原因箇所は判明。…ただ、どうやって直したらいいものか。
再送するべきところでしてくれないわけで、手の出しようがないように見えて、
タイミングをずらしちゃえー
ってわけで、ちょっと前にでかいパケットが数個流れているのを狙って、クライアントの MTU を 1500 から 1000 へ変更。
結果、成功。
… Path MTU Discovery Black hole かぁ?でも原因箇所のところで送ってるパケットのサイズはたった 19 バイトだったり…。
でも直ったからいいやぁ〜。ルンダに突撃〜(ぉぃ