なんとなく

誰得感満載な記事が多いかも。Mono関係とLinuxのサーバ関係、レビューとか。

PS4のネットワークインターフェースが落ちているように見えるのでパケットキャプチャしてみた

takeshich.hatenablog.com

takeshich.hatenablog.com

からの続き。

問い合わせしたり、ハードウエアの障害かどうかみてもらったり、いろいろしたけど、カスタマサポートもアフターサポートもこれ以上は期待できないところまできてしまっていて、公式以外の力を借りて解決に当たらなくてはならないという状況になっていた。

そこで、みんなで解決!PlayStation®のサポートコミュニティーに書き込んだ。

support.asia.playstation.com

ここで、アドバイスを頂いたのは、ルータのみを使った環境にしても問題が発生するか確認してみて、ルータのログ確認すればということ。ルータについているHUBに直接つないで試していなかったし、その状況で得られるルータのログを確認していなかったので、確認してみると問題発生時にPS4はLink downしていないことがわかった。

Link downしていないのだが、pingへ応答しなくなることからICMPおよびARPのやり取りに際し問題があることは想定される。なんらかのネットワーク的な問題が起こっている可能性は非常に高いので、再現頻度の高い操作方法を行い、問題を発生させ、宅内LANの通信についてパケットキャプチャをし、どういうことが起こっているのか確かめてみることにした。

結論を予め書いておくと、パケットキャプチャしたものをWireshark使用し問題発生時のARP,ICMP,TCP,UDPについて見ていくとPS4のネットワークインターフェースでの受信に問題が発生している可能性が高いことがわかった。

2019/11/09追記

システムソフトウェア 7.00に更新後、1ヶ月ほど経過したが問題の発生を確認できなくなった。

問題とは

発生している問題についておさらいしておく。

問題は、PS4の有線のネットワークインターフェースが落ちているように見え、通信ができなくなるというもの。 特に、リモートプレイ時に突然PS4との接続が切れ、以後PS4に接続できなくなる場合がある。 週末に家族がテレビをよく使うため、リモートプレイをする必要があり問題はほとんどその際に発生している。

www.youtube.com

パケットキャプチャ時の動画ではないが、問題発生させることがほぼ意図的に可能な状況でもある。

確認できている状況

  • 問題発生時にネットワークの疎通確認として、PCからPS4IPアドレスに対してpingコマンドを打ち続けると「要求がタイムアウトしました」「宛先ホストに到達できません。」と出、応答がないことが確認できる。
  • 問題発生時に本体のところに行き、TVをつけ確認するとPS4は稼働している。エラーは特に出ていない。
  • 問題発生時に本体操作でPS Storeに接続しようとしても○△□×しばらくおまちくださいが数分表示された後、エラーが発生しましたとメッセージが出る。 (初期化後、このメッセージがエラーコードWV-33907-2で表示されるエラーメッセージになる場合もあるようになった。)
  • 問題発生時に本体操作でブラウザで閲覧しようとするとCouldn't resolve host name と出て、DNSによる名前解決ができていない。IPアドレスで接続しようとするとtimeout was reachedと出る。
  • 問題発生時に本体操作で、設定>ネットワーク>インターネット接続の診断を実行すると、通信ができるようになる。 (このタイミングでPCを確認すると打ち続けていたpingの応答が出始める。)
  • 問題発生時に省電力モードでスタンバイモードになるまで放置するとスタンバイモードになる。2パターンの状況があり、問題発生時より疎通確認として、PCからPS4IPアドレスに対してpingコマンドを打ち続けていてもと全く応答がない場合とスタンバイモードになる時点でLink down/upが起こり、打ち続けていたpingの応答が出始める場合がある。
  • 省電力モードでスタンバイモードになった状態で通信が回復しない場合、コントローラーのPSボタンを押下し、スタンバイモードから復旧させると通信ができるようになる。 (このタイミングでPCを確認すると打ち続けていたpingの応答が出始める。)
  • リモートプレイ時、ゲームプレイ中でなくホーム画面およびライブラリ画面で問題が発生することが多い。
  • 頻度は少ないがリモートプレイ時ゲームプレイ中でも問題の発生を確認している。
  • まれに、リモートプレイ時ではなく、本体操作時にも問題の発生を確認している。
  • クライアントはVitaTV、PCどちらでも問題の発生を確認している。

パケットキャプチャ時のネットワーク構成

パケットキャプチャにはbridge構成にしプロミスキャスモードにしたRaspberry Pitcpdumpを使用した。

ネットワークの構成は以下図のとおりである。

パケットキャプ時のネットワーク構成
パケットキャプ時のネットワーク構成

本文中に出てくる機器とIPアドレスの対応表を書いておく。

機器 IPアドレス
Router 192.168.1.1
PC 192.168.1.12
PS4 192.168.1.27
HTTP Server 192.168.1.10

ARP,ICMP

問題発生タイミングの特定

確認できている状況として、問題発生時にネットワークの疎通確認として、PCからPS4IPアドレスに対してpingコマンドを打ち続けると「要求がタイムアウトしました」「宛先ホストに到達できません。」と出、応答がないことが確認できる。

実際にpingをPC(192.168.1.12)からPS4(192.168.1.27)に対して打ち続けている状態で問題が発生した時の状況は、以下図のようになっている。

f:id:takeshich:20190930143932p:plain

また、PC(192.168.1.12)およびPS4(192.168.1.27)のICMP,ARPのやりとりをみると問題発生のタイミングがおおよそ分かる。

f:id:takeshich:20190930143946p:plain

f:id:takeshich:20190930144000p:plain

キャプチャ開始から754秒の時点ではicmp echo replyがPS4(SonyInte_79:4d:be)からPC(Elitegro_06:cd:24)に送信されており、ここまでは問題が起きておらず、それ以降998秒までecho replyがない。echo request はキャプチャ開始から757秒に送信されているがタイムアウトで応答が無いとされている。次のecho requestもだ。このことから問題はおそらくキャプチャ開始からおおよそ757秒ごろに発生したものと思われる。そして、ARPについてみても、763秒のPC(Elitegro_06:cd:24)のARP requestに対してもARP replyがなく、3度繰り返した後おそらく対象がARPテーブルから削除されブロードキャストあてにARP requestが送信されるようになる。

ping において「要求がタイムアウトしました。」と表示されているのは、タイムアウト時間を経過してもicmp echo replyが戻ってこない。所持しているARPテーブルからARP requestを出してもARP replyが戻ってこないためだと考えられる。そして、「宛先ホストに到達できません。」と表示されるのは、 ARPのやり取りにおいて、PS4宛ではなくブロードキャストアドレスに対して、ARP request が出ていることから対象がARPテーブルから削除され、ARP requestを出してもARP replyが戻ってこないためだと考えられる。

問題解消タイミングの特定

問題発生時に本体操作で、設定>ネットワーク>インターネット接続の診断を実行すると、通信ができるようになる。

実際にpingをPC(192.168.1.12)からPS4(192.168.1.27)に対して打ち続けている状態で問題が解消した時の状況は、以下図のようになっている。

f:id:takeshich:20190930144015p:plain

f:id:takeshich:20190930144026p:plain

ICMPについて見てみると問題が発生したと思われるecho replyが757秒から998秒までないのはすでにみた。

ARPについてみるとPS4(SonyInte_79:4d:be)から997秒ごろにGratuitous ARPが送信されている。PS4(SonyInte_79:4d:be)からARP requestに対して各機器がreplyしていることが伺える。

PS4本体操作で、設定>ネットワーク>インターネット接続の診断を実行し、問題が解消したと思われるのが997秒ごろだ。

UDP

問題発生時にPS4の本体操作でブラウザで閲覧しようとするとCouldn't resolve host name と出て、DNSによる名前解決ができていない。

f:id:takeshich:20190715194442j:plain 画像はパケットキャプチャ時のものではないが、別の問題発生時に保存したものである。

UDPについてみていく。ルータ(192.168.1.1)にDNSサーバの機能があるのでPS4(192.168.1.27)とのやり取りをみる。

f:id:takeshich:20190930144057p:plain

問題が起きたと思われる757秒ごろから1度DNSのクエリが投げられ、回答が返ってきているにも関わらず、同じクエリが投げられている。これは問題が解消したと思われる997秒ごろまで続いている。

f:id:takeshich:20190930144111p:plain

998秒以降は、同じクエリが投げられるといったことは確認できない。

TCP

次にTCPについてみていく。PS4の本体操作でブラウザを起動し、宅内のHTTPサーバ(192.168.1.10)に接続してみる。

通常時は、以下図のように問題のないやり取りが行われる。

f:id:takeshich:20190930144127p:plain

しかし、問題発生時には以下図のようになる。

f:id:takeshich:20190930144138p:plain

PS4(192.168.1.27)からSYNが送信され、それに応答してHTTPサーバ(192.168.1.10)からSYN,ACKが送信される。ここまでは問題ない。この後PS4(192.168.1.27)からACKが送信され、TCPの3WAY Handshakeが整い、コネクションが確立するはずであるが、そうはなっていない。

PS4(192.168.1.27)からSYNが再送され、HTTPサーバ(192.168.1.10)からSYN,ACKが再送されている。

なぜ、PS4(192.168.1.27)からACKが送信されないかと考えると

  • 問題発生時にARP requestにPS4の応答がない点
  • 問題発生時にDNSのやり取りで回答が返ってきているのに再度同様のクエリを送信している点

を踏まえ、PS4のネットワークインターフェースでの受信に何らかの問題があり、HTTPサーバ(192.168.1.10)からのSYN,ACKを受信したと解釈できていないためACKが送信されないと考えるのが妥当と思われる。

まとめ

パケットキャプチャした結果を見てきたが、問題発生時にはPS4のネットワークインターフェースでの受信に何らかの問題が起こっている可能性が高いと言うことができる。

ただし、問題発生の原因は不明である。

カスタマサポートにはいろいろと問い合わせしてきたが、対応自体が今までほとんどで経験したことのない低いレベル(メールに書いてある事自体を読み取れないだけならまだしも、書いてないことを読み取ってしまうようなレベル)なので、どう伝えればうまく技術者のところまでエスカレーションしてもらえるのか全くわからない。