# A Network Analysis on Cloud Gaming: Stadia, GeForce Now and PSNow
## 4 Results
### Multimedia Streaming  
We now analyze how the three services stream the multimedia content (audio and video) from the gaming server to the client. In the case of Stadia and GeForce Now, we will provide figures extrapolated inspecting the RTP headers, while PS Now, we can separate the different streams by looking at the first byte of the UDP payload, as mentioned in the previous section. In the last row of Table 2, we report the employed video codecs as we extract from the browser/application log files. The widespread H.264 codec is used by both GeForce Now and Stadia, employing the newer VP9 if the device supports it. For PS Now, we could not obtain any information about the codecs.  
Stadia relies on the WebRTC APIs, and, as such, the multimedia streaming follows its general principles. A single UDP flow carries multiple RTP streams identified by different source stream identifiers (SSRC). A stream is dedicated to the video, while another one to the audio track. We also find a third flow used for video retransmission, as we confirm using the Chrome debug console (the associated RTP stream is found to have mimeType video/rtx). During most of the session, it is almost inactive. At certain moments, the flow becomes suddenly active, carrying large packets containing video content. Moreover, this behaviour co-occurs with packet losses and bitrate adaptations on the video stream, as we expect for a video retransmission feature.  
GeForce Now again relies on RTP for multimedia streaming, as described in the previous section. Differently from Stadia, it uses separate UDP flows for the different multimedia tracks, whose client-side port numbers can be used to distinguish the content as NVIDIA publicly declares ([[https://nvidia.custhelp.com/app/answers/detail/a_id/4504/-/how](https://nvidia.custhelp.com/app/answers/detail/a_id/4504/-/how)]([https://nvidia.custhelp.com/app/answers/detail/a_id/4504/-/how](https://nvidia.custhelp.com/app/answers/detail/a_id/4504/-/how))can-i-reduce-lag-or-improve-streaming-quality-when-using-geforce-now, accessed on 1 October 2021). On port \(49,005\), a UDP flow carries a single RTP stream for the inbound video. The audio is contained in a UDP flow on port \(49,003\), in which we find two RTP streams active at the same time.  
Regarding PS Now, we cannot find any header belonging to publicly documented protocols. However, the inspection of several packet captures allows us to infer the encapsulation schema used by the application. A single UDP flow carries all multimedia streams. To multiplex the streams, the first byte of the UDP payload indicates the channel number, followed by a 16-bit long sequence number. Channel 2 carries the video stream, as we can conclude by looking at packets' packet size and inter-arrival time. Channel 3 carries the audio track as the packets are small and fixed-sized (250 B), and arrive at a constant pace of one every 20 ms. We also find channel 0, especially at the beginning of the flow, which we conjecture is used for signalling. Finally, channel 12 seldom becomes active, especially in the correspondence of large packet losses. As such, we conjecture that it is used for video retransmission or some form of forwarding error correction (FEC), similarly to the Stadia approach.  
_Take away: For Stadia, a single UDP flow carries separate streams for audio, video and video retransmissions. GeForce Now uses multiple UDP flows on different client-side ports. In PS Now, a single UDP flow appears to carry an audio, a video and a retransmission/FEC stream._