Experimenting with Adaptive Bitrate Algorithms for Virtual Reality Streaming over Wi-Fi
收藏资源简介:
Dataset of resulting files from capturing VR traffic in Wi-Fi 6 of a fork of the Air Light Virtual Reality (ALVR) software, used to stream games from a PC to a VR HMD in real time. The dataset includes: Parsed Wireshark captures in TSV format, both captured from server and network emulator, and corresponding ALVR session log are found for each experiment. In each folder, all files of netem, server or ALVR are found (with names corresponding to the emulated network effect, which is applied via the netem computer). We are using Constant BitRate (CBR) for each test, at 100 Mbps. The plots are added in the corresponding folder for each effect, and a metric comparison between WS and ALVR. ALVR session logs for a comparison on the logged metrics under tests of Mobility, using different strategies for bitrate adaptation: CBR, ABR and our own contribution. ALVR session logs for a comparison on the logged metrics under tests of emulated capacity drops, using different strategies for bitrate adaptation: CBR, ABR and our own contribution. The Wireshark captures have been parsed from a PCAPNG into a CSV file (via tshark) containing the principal fields of each packet separated by a space (TSV format). Since the PCAPNG captures were over 1 GB each, we keep only a subset of the first bytes of the payload and the main fields, and discard the rest. There are additional CSV files for TCP UL packets, which we parsed separately from the same captures for us to validate the measured RTT of ALVR. The ALVR session logs contain raw json strings in .txt format, logged from the server using our fork of ALVR. We're using some additional events from the ones ALVR originally used, in order to log our metrics at arbitrary points in the code. The first 22 bytes of the payload in each packet are used to parse into the StreamSocket fields that ALVR uses, and record timestamps to validate the metrics of ALVR manually; which can be used to reproduce our results. Namely, each row of the csv (frame.time_relative, ip.src, ip.dst, frame.len, data.data) contains the timestamp of the packet, its IP source, destination, length and first 22 bytes of the payload as a hexadecimal string. To analyze the CSV via python, the original StreamSocket fields can be recovered for each packet, using iteratively the following lines: data_bytes = bytes.fromhex(row["data.data"]) shard_length, stream_id, packet_index, shards_count, shard_index, _ = struct.unpack(">IHIIII", data_bytes)



