A quick summary of CAVICO project

Description of the VNF

The CAVICO project aims to provide a technology enabler for video streaming that is controlled in the function of QoE (Quality of Experience). In order to present a proof of the concept the demonstrator is based on a video camera installed in the car provided within automotive Experimental Vertical Instance (EVI) environment developed by IT Aveiro partner.
The architecture of CAVICO system is a module-based solution that is shown in the figure.


A main part of the system is located in VNF (Virtual Network Function) where ControlApp is responsible for interpretation of video stream, GPS (Global Positioning System) data and network throughput. Raspberry Pi (RPi) cyclically sends request for control via TCP (Transmission Control Protocol) connection. Every time, when a new request is received, the control algorithm calculates current FPS (Frame Per Second), video resolution and stream bit rate using information about present use case, observed video QoE and measured network throughput.

Running an experiment

The system works in a server-client model. VNF is based on Ubuntu VM that has three network interfaces described be NSD. The client is based on a Raspberry Pi module that is connected to OBU using WiFi. The Raspberry Pi module communicates with VNF via OBU that provides a multi-link transmission using different wireless technologies. Both VNF server and Raspberry Pi module have two interfaces that are used for:

  • control (‘provider’ network),
  • data exchange (‘provider2’ network).

The communication resources used in CAVICO project encompassed several nodes including:

The consecutive steps to run the experiment are:

  1. login to 5GinFIRE network with OpenVPN using credentials;
  2. login to the Jump Machine: ssh using credentials;
  3. login to VNF server from the Jump Machine: ssh using credentials;
  4. run a program of the server application in VNF:
cd H2020-CAVICO_DesktopApp
./H2020-CAVICO_DesktopApp 1

A switch “1” overwrites any settings in the configuration file and forces to start the server application unconditionally.

  1. in a new terminal window repeat steps 2-3 and then login to OBU: ssh using the credentials;
  2. run GPS server:
cd H2020-CAVICO_gps_server_OBU/gps_server_obu/
  1. in a new terminal window repeat steps 2-3 and then login to Raspberry Pi module: ssh using the credentials;
  2. run RPiApp application using commands:

During tests the parameters were: IP_OF_VNF, CONTROL_PORT = 9000

  1. in a new terminal window repeat steps 2-3 and run a program that measures the transmission throughput:
cd H2020-CAVICO_DesktopApp/externalPrograms

During tests the parameter was SPEEDTESTER_PORT = 5005

  1. if you want to see a preview of the video retransmitted from VNF it is necessary to have an additional PC which has the IP address accessible from the VNF server. To run such a preview open software which is able to receive a SDP stream and run it using sdp file generated by ControlApp.

Alternatively you can access applications at the client site via LMA Hub:
11. login to the EVI network via the gateway: ssh using the credentials;
12. login to OBU: ssh using the credentials;
13. run a program that reads GPS coordinates - see no. 6;
14. login to Raspberry Pi module: ssh using the credentials;
15. run a program that measures the transmission throughput - see no. 9.

Results are stored in the following files:

  • BI.csv - Block indicator;
  • control.csv:
    • networkScale - average throughput,
    • FPS,
    • res_X, res_Y - video resolution,
    • bitrate - transmission throughput,
    • networkBandwidth - throughput [Mbps],
    • useCase - identified use case;
  • GPS.csv - GPS coordinates;
  • QOE.csv - QoE parameters: Frame, Blockiness, SpatialActivity, Letterbox, Pillarbox, Blockloss, Blur, TemporalActivity, Blackout, Freezing, Exposure, Contrast, Interlace, Noise, Slice, Flickering;
  • TA_S.csv - TA scale.

The results can be downloaded from the server to plot them.

Example results

VNF is capable to collect data that allow:

  • identifying use cases (useCase),
  • measuring transmission throughput (bitrate),

and on this base it provides changes in:

  • the frame rate (FPS),
  • video resolution (res_X).

Usecase Bitrate
Fps Resx