# A Network Analysis on Cloud Gaming: Stadia, GeForce Now and PSNow
## 4 Results
### Network Testing  
All three services have built-in functionalities to probe the network between the client, and (multiple) gaming server machines to determine if the conditions are sufficient for a stable gaming session. In a few words, the client applications perform a speed test-like measurement to estimate the network delay and bandwidth. We notice that the network testing is not performed consistently on each session startup, but the applications tend to re-probe the network only after a variation of the client IP address.  
Stadia performs a speed test based on RTP packets carried over a session established using the standard WebRTC APIs for the multimedia streams. The server (not necessarily the same used for the subsequent gaming session) sends 5-6 MB of data to the client, resulting in a UDP session which is 5-60 s long, depending on the network conditions. The  
\begin{table}
\begin{tabular}{l c c c} \hline \hline  & **Stadia** & **GeForce Now** & **PS Now** \\ \hline Streaming & RTP (and RTCP) & RTP & Custom (UDP) \\ Player’s input & DTLS & Custom (UDP) & Custom (UDP) \\ Session setup & DTLS, STUN & TLS & Custom (UDP) \\ Network Testing & RTP & Iperf-like & Custom (UDP) \\ Video Codec & H.264, VP9 & H.264 & - \\ \hline \hline \end{tabular}
\end{table}
Table 2: Protocol usage for different gaming session components.  
RTP packets are large, around 1200 bytes on average, but we cannot inspect their payload, since it is encrypted.  
GeForce Now uses a schema similar to the one used in the popular tool Iperf ([[https://iperf.fr/](https://iperf.fr/)]([https://iperf.fr/](https://iperf.fr/)), accessed on 1 October 2021),in which the client sets up a network test over a UDP channel on the server port 5001 (the same port used by Iperf). The first few packets carry JSON-encoded structures to set up the test. In case the test includes a latency measure, the last flow packets indicate the measured RTT samples. In case the test is only for bandwidth, we observe a stream of large-sized UDP packets lasting 5-10 s. Again, the testing server is different from the one used for the subsequent gaming session. The inspection of the JSON messages allows us to understand that the client probes the latency towards multiple alternative measurement servers.  
PS Now adopts a fully custom approach again. At the beginning of each gaming session, the client performs a few-seconds long bandwidth test using a custom or fully encrypted protocol running over UDP. We cannot infer any information from the packets, for which we only observe that they all have size 1468 bytes. The test is performed towards a server different from the one used for the proper gaming streaming session. We note similar additional streams consisting of few packets toward a handful of other servers that we conjecture are used to probe the latency towards more endpoints.  
**Privacy concerns:** While analyzing the GeForce Now network testing mechanism, we notice that the client-side control packets used to set up the test expose the user to a severe privacy concern [29]. The user ID is sent in clear into the UDP packet, allowing an eavesdropper to uniquely identify a user, even if they change their IP address or are roaming on another network. We compared the user ID to the user account number that we obtained on the NVIDIA website profile management page, and they match, confirming that the identifier is uniquely associated with the account. Following the best practices for these cases, we signalled the issue to NVIDIA before making our paper public, which plans to resolve it using one of the following updates.  
_Take away: Stadia uses an RTP stream for testing the network, while GeForce Now relies on an Iperf-like mechanism. Again, PS Now employs a fully custom approach. We found a severe privacy leakage in the current GeForce Now implementation that allows an eavesdropper to obtain the user identifier._