Skip to content

RohitPanda/Quic-Test

Repository files navigation

YouTube test for QUIC library

This work continues Youtube test
The goal of the thesis is testing QUIC performance for YouTube videos for IPv4 and IPv6.

The project consist of 3 projects: lsquic probe client, quic youtube test and modified tcp youtube test. Tests were build on Ubuntu 16 LTS.

Quickstart

To install libraries, run bash ./libs_installation.sh for x64_86 or ./libs_installation_cpu_general.sh to build all dependencies from source code.
Script requires installed build-essential tools, especially gcc and make. To download all distributives with wget, please set up all settings like proxy in advance.
QUIC YouTube test requires: lsquic, ffmpeg, libevent.
YouTube test (tcp_youtube_test) requires: ffmgep, curl, yasm, zlib. Curl should be built locally to disable extra features and use the same encryption library for both tests.

For lsquic and curl boringssl is required.
Boringssl is built with go.

Script installs globally if no command is found: zlib, libevent, yasm. Other libraries are installed locally only.
Installing script was tested for only Ubuntu 16 and 18 LTS. For manual installation or script description refer to Manual installation.

Generated test executables are copied to /tests. Run 'bash get_top_youtube_list.sh' first to generate list of youtube top 50 video ids and then run 'bash test_run.sh' to run all test configurations (ip4 and ipv6 for 35,39,43 quic versions).
To run script get_top_youtube_list.sh you need GET command installed.
Test time and used port numbers can be altered in test_run.sh MAX_TIME_ARG and PORTS variables. Results are stored in tests/results.
Tests can be automated by adding with grontab -e content of tests/schedule_tests.txt. It refreshes every day at 12:50 top youtube video list and runs tests every hour. To disable, delete added lines. Change the path according to your test directory location. For instance (cd /home/userName/tests && timeout 1h bash ..) for both lines.

YouTube test (tcp_youtube_test)

YouTube test is continues Youtube test with use of curl.
New features of test:

  • Imported on CMake;
  • Updated ffmpeg and curl references using boring ssl;
  • Extended help support, now it's possible to see output hits with --hekp_output option in addtion to existing help;
  • Additionally to tcp connect time, there is full connect time with ssl nearby;
  • Support of TLSv1.3 with use of BoringSSl;
  • Curl updated to 7.58;
  • FFMGPEG updated to 4.0;
  • Use of static libraries only (can use binaries)
  • To install test, install all libraries and run cmake & make. Then run the test with ./youtube_test, use --help

    QUIC YouTube test (youtube_test)

    Instead of Youtube test was build test, where curl is exchanged for QUIC client library.

    Repeats features of modified TCP test. There are 2 additional output fields for audio and video stream: quic version and http header version. More information can be requested with ./youtube_test --help_output
    To install test, install all libraries, QUIC client library and run cmake & make.
    Then run the test with ./youtube_test, use --help

    QUIC client library(quic_probe)

    QUIC client library purposed for downloading web resource or receiving download size with head http request.
    Based on lsquic library.
    Life cycle of usage is:

    1. create_client
    2. for every set of request, can be used multiple times:
      1. start_downloading
      2. for every request:
        1. get_download_result whine not null
        2. destroy_output_data_container
    3. destroy_client
    Example and test usage can be seen in main.c.

    To test library for main.c scenario with gprof run ./profiling_script.sh. Result is stored in profile_test/analysis.txt

    To check just donwload size, set is_header option = 1 for request.

    To install client, install all libraries and run cmake & make. There will be static library libquic_client.a

    License

    Creative Commons License

    This template is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License, meaning that:

    • You can share (copy, redistribute) and adapt (remix, transform, build upon) this template for any purpose, even commercially.
    • If you share the template or a modified (derived) version of it, you must attribute the template to the original authors (Florian Walch and contributors) by providing a link to the original template and indicate if changes were made.
    • Any derived template has to use the same or a compatible license.

    The license applies only to the template; there are no restrictions on the resulting PDF file or the contents of your thesis.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published