どこにも情報がなく、興味があったので対戦の仕組みについて調べてみました。
PS4が送受信するパケットのキャプチャと業務用ルータの情報を元に解析したものであり、推測を多々含みます。

筆者の環境はIPv4、ルータ1台で「NATタイプ2」となっており、これを前提でまとめています。

また、文の構成はフルブwikiの対戦の仕組みを参考にさせて頂きました。

接続構成とパケットキャプチャ方法
PS4-業務用ルータ-インターネット
PC -
上記の接続構成で、業務用ルータのPC接続ポートにミラーポートを設定し、

 

パケットキャプチャソフトで取る。
その際、業務用ルータのNATテーブルを見てポート変換状況を確認する。

使用しているサーバ
アカウント:※調査中

エージェント:自分や相手の情報の通信、どのセッションサーバに登録したか、キープアライブ
セッション:セッションサーバ(複数台)から対戦セッション検索し該当セッションサーバの通知

STUN:NATトラバーサルを行うために、自分の使用するIPとudpポート番号を登録

ストレージ: 自分の戦績の保存など(体験会のカジュアルマッチでは未使用?)


使用しているポート番号
ルータがある環境では外部から開始する接続は通常できない。
サーバーとの通信はどれもPS4(ルータ内部)発信なので、それ以降はセッションが確立されているため各通信はルータを通過できる。
ただ対戦者同士のやりとりはP2P通信を使用していて、他者発信の通信も受ける必要がある。

ポート番号はフルブ以前と異なり、9305/udpのポートを使用している。

ルータにUPnPありの場合、対戦開始時にルータに9305/udpのポート開放が登録され、
対戦終了時に9305/udpのポート変換情報が削除される。
ルータがありUPnPなしの場合、9305/udpのポート開放をルータに手動で行う必要がある。

9305/udpポートが空いてない場合、9305/udpではなくルータがランダムなudpポート番号に変換して通信する。
そのため、ポート開放されていなくてもPS4からのポート番号は9305/udpポートが使われる。
ポート開放ができていない状況ではSTUNを用いたUDPホールパンチングのNATトラバーサルを使用している。
ただし確実なP2P通信するのが難しいため、制限される場合があるといわれている。

 

NATトラバーサルがあることで、同一ルータの下にPS4を複数台置いてもポートが異なるため同時に通信対戦ができる。

 

ポート開放

9305/udpポートのポート開放を行う。

またはルータのUPnPをありにする。

(※IPv4の場合はあり。v6プラスなどのIPv4 over IPv6の場合はなし。詳細は別記事)

 

上記の設定を行わない場合、ルータがランダムなudpポートに変換しNATトラバーサルにて、通信対戦を行う。

PS4はUPnPの設定がないため、デフォルトでありになっているようだ。

 

対戦中の通信速度
フルブと変わらず上下ともに平均200Kbps程度。

カジュアルマッチの大まかな流れ

※ストレージサーバなどど通信している場合もあるが省略

  1. エージェントサーバに自分の情報登録
  2. エージェントサーバから相手リスト(PSNID、ルータのグローバルIP、PS4のプライベートIP、ルータ/PS4ポート番号など)取得
  3. リストの全グローバルIPに対し、ポート番号が9305なら9305/udpで送信、0ならping送信
  4. エージェントサーバからセッションサーバ情報教わる
  5. STUNサーバに自分のIPとポート番号を登録(ポート開放されていない場合、ルータでNAT変換したポート番号を登録)
  6. セッションサーバに自分の情報登録
  7. セッションサーバから対戦相手の情報通知
  8. 対戦(自分と他3人とのP2P通信)
  9. セッションサーバのセッション解放