GithubHelp home page GithubHelp logo

davideparpinello / videoflux Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 17.78 MB

A service migration framework for live video streaming using SDN and Virtualization

License: MIT License

Shell 6.96% Python 93.04%
sdn sdn-network virtualization comnets docker vagrant

videoflux's Introduction


Logo

VideoFlux

A service migration framework for live video streaming using SDN and Virtualization
Download thesis »

Davide Parpinello

Table of Contents

  1. About
  2. Requirements
  3. Steps
  4. Support and future deployment

About

This repository contains the source code for a service migration framework for live video streaming using SDN and Virtualization. The project has been deployed during an internship for University of Trento, under the supervision of Prof. Fabrizio Granelli.

The dissertation of this internship, also presented as thesis for the Bachelor's Degree's final exam, can be downloaded here. The dissertation contains a bit of theory and the complete explanation of the system.

Requirements

To build this project there are some software requirements:

  • ComNetsEmu, an holistic testbed/emulator for SDN and NFV. Installation and configuration is available on the project's repo
  • Vagrant, required by ComNetsEmu
  • Docker (not mandatory) to build Docker images
  • An X11 server installed on the host machine. E.g., Xquartz, Xorg.

Steps

The first step to use this framework is to configure the ComNetsEmu virtual machine, as shown in its repository.

With ComNetsEmu working, first clone this repository locally, then it is necessary to build from scratch (inside ComNetsEmu) or pull the pre-built Docker containers from the Hub.

  • Build from scratch: to achieve this is enough to run the build script build_containers.sh as superuser. The script will automatically build the three containers needed for the framework. In this case, the Python script comnetsemu-scripts/topology_simple.py will need to be modified on rows 144, 151, 161 with the correct containers' names.
  • Pull from Docker hub: running the script pull_docker_containers.sh as superuser. The script will pull prebuilt containers from Docker hub.

With the containers correctly built or pulled, it is necessary to configure correctly the X11 Forwarding, enabling the test-client image to show VLC or Apache Jmeter on the host screen. To achieve this, is best to disable the access control list on the host machine, using the command xhost +, then set the DISPLAY environment variable of ComNetsEmu with the host's IP address using the command export DISPLAY=192.168.1.2:0. Change this accordingly to your configuration. This specific configuration is needed because Docker hosts inside ComNetsEmu are not able to forward X11 using only localhost, having a particular network configuration.

With the X11 forwarding setted up, it's possible to start the main Python script with sudo python3 topology_simple.py. The script will automatically deploy the containers, set up the network and start three Xterm connected to the different hosts. The script will ask the user when to start with the migration, that will be performed three times with about 30 seconds between each other. At the end, the script will ask the user to perform again the migration or stop and exit.

To test the stream with VLC, it is enough to start it inside the client Xterm with the command vlc and open the stream http://10.0.0.12:8080/hls/stream.m3u8. If the VLC's GUI will not show up it's necessary to check the correct X11 Forwarding configuration. To use Apache Jmeter, move to the directory /apache-jmeter-5.3/bin/ and start it with ./jmeter. A pre-configured project is available in /apache-jmeter-5.3/bin/hls-graphs.jmx.

Support and future deployment

Feel free to ask the author for advices or troubleshooting. Giving the complexity of the system is easy to find issues.

If you have any ideas on how to improve this project please fork it and give credits about the original work.

videoflux's People

Contributors

davideparpinello avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.