Skip to content

sajibtariq/360-VR-QoE-In-band-QoS

Repository files navigation

Predicting XR Services QoE with ML: Insights from In-band Encrypted QoS Features in 360-VR

Getting Started with the Pre-configured Testbed VM

  • The testbed includes Mininet-Wifi, VR Player, TcpDump, 360 Videos, Viewport Traces, and Network Traces
  • Download link: VM [9 GB Size]: Ubuntu 20.04 x64 - pass: vrexp
  • Requirement: Oracle VirtualBox
  • After downloading the vm image "vr-ubuntu 1 1.ova", open VirtualBox, select File --> Import Appliance --> vr-ubuntu 1 1.ova
  • Start the "vr-ubuntu 1" vm from VirtualBox. Select View --> Virtual Screen 1 --> Scale to 100% and select Full-Screen Mode. If the screen does not adjust properly, reboot the vm.
  • Note: VM has limited storage to store raw data. Thus, we shared a folder from the guest vm to the host machine as follows-
    • Create a folder named vrexp in any directory of the host machine which provides enough storage.
    • Suppose the host machine name is ubuntu, and vrexp folder is created in "/home/ubuntu/Videos" directory. Now open VirtualBox, select vr-ubuntu 1 --> Settings --> Shared Folders --> Machine Folders, then set the Folder path "/home/ubuntu/Videos/vrexp" and Folder Name "vrexp" and set Auto-mount
    • Start the "vr-ubuntu 1" vm from VirtualBox. Select and run Devices --> Insert Guest Additions CD Image and reboot the VM
  • Locations of the 360 videos, vr player, viewport, and network traces are as follows-
    • Videos: /var/www/html/v1, /var/www/html/v2
    • Viewport traces: /usr/local/src/per_video
    • Network traces: /home/vr-exp2/Traces
    • VR player (Adapted from ➡️): /home/vr-exp2/player

Data Acquisition

  • Open the Ubuntu terminal in the VM and execute the following command:
 $ cd /home/vr-exp2/mininet-wifi
 $ sudo python3 param.py
  • Where param.py contains all the parameters information regarding the experiment and calls main.py program each time with a specific set of parameters, the main.py program further calls tc-bw_delay.sh script to set bandwidth parameters from 4G and 5G pre-collected traces using Linux tc.

  • The output of each experiment offloads a PCAP file, and VR playout performance log in the corresponding vrexp folder.

    • You will see three files regarding VR Playout performance: <file_name>.log, <file_name>-segment.csv, and <file_name>-session.csv.
    • The <file_name>.log file contains the entire session metrics, such as the total number of tiles downloaded for each zone and resolution, the average bitrate for each zone, total quality switches for each zone, total stall time, and startup delay.
    • The <file_name>-session.csv file contains the same information as <file_name>.log but in comma-separated values (CSV) format. However, there is a minor mistake:
      • The column name "z1_bit" should be replaced with the column name "til_4k_z3"
      • The column name "z2_bit" should be replaced with the column name "z1_bit"
      • The column name "z3_bit" should be replaced with the column name "z2_bit"
      • The column name "til_4k_z3", should be replaced with the column name "z3_bit"
    • The <file_name>-segment.csv file contains each downloaded segment's information, such as resolution, data size, download time, bit rate, and so on.

Data Preprocess

  • Raw data sample, including PCAP and VR performance metrics log file ➡️
  • QoE value measurement script ➡️ and output CSV file containing QoE metrics ➡️ an example
  • QoS feature extraction script ➡️ and output CSV file containing all QoS features ➡️ an example
  • QoE metrics and QoS features merge script ➡️, with output CSV file as the final dataset sample ➡️
  • Requirement:

Data Analysis

Standalone VR Client and Content Utilization

  • See the given instructions ➡️