Git Product home page Git Product logo

amus-ndnsim's Introduction

amus-ndnSIM - Adaptive Multimedia Streaming Framework for ndnSIM

NOTE: This version works only with ndnSIM 2.0 and the related ndn-cxx version(s). We are aware that at least revision a1ffbc7a256f308d0ac318f02ebba1d6fa2305f8 of ndn-cxx works with this repository.

This is a custom version of ndnSIM 2.0, supporting Adaptive Multimedia Streaming and the BRITE extension. Please refer to the original ndnSIM github repository for documentation about ndnSIM and ns-3.

Adaptive Multimedia Streaming Framework for ndnSIM is trying to create a bridge between the multimedia and NDN community. Therefore it is providing several scenarios and the source code for adaptive streaming with NDN, based on ndnSIM and libdash.


Installing Procedure

  • Install Pre-Requesits for ndn-cxx, ns-3, BRITE
  • Install Pre-Requesits for libdash
  • Clone git repositories
  • Download Brite repository
  • Build Brite
  • Build ndn-cxx (revision a1ffbc7a256f308d0ac318f02ebba1d6fa2305f8)
  • Build libdash
  • Build ns-3 with amus-ndnSIM
	# install pre-requesits for ndn-cxx, ns-3, etc...
	sudo apt-get install git
	sudo apt-get install python-dev python-pygraphviz python-kiwi
	sudo apt-get install python-pygoocanvas python-gnome2
	sudo apt-get install python-rsvg ipython
	sudo apt-get install build-essential
	sudo apt-get install libsqlite3-dev libcrypto++-dev
	sudo apt-get install libboost-all-dev
	# install pre-requesits for libdash
	sudo apt-get install git-core cmake libxml2-dev libcurl4-openssl-dev
	# install mercurial for BRITE
	sudo apt-get install mercurial

	mkdir ndnSIM
	cd ndnSIM

	# clone git repositories for ndn/ndnSIM
	git clone https://github.com/named-data/ndn-cxx.git ndn-cxx
	cd ndn-cxx
	git checkout a1ffbc7a256f308d0ac318f02ebba1d6fa2305f8 .
	cd ..
	git clone https://github.com/cawka/ns-3-dev-ndnSIM.git ns-3
	git clone https://github.com/cawka/pybindgen.git pybindgen
	git clone https://github.com/ChristianKreuzberger/amus-ndnSIM.git ns-3/src/ndnSIM
	git clone https://github.com/bitmovin/libdash.git

	# download and built BRITE
	hg clone http://code.nsnam.org/BRITE
	ls -la
	cd BRITE
	make
	cd ..

	# build ndn-cxx
	cd ndn-cxx
	./waf configure --enable-shared --disable-static
	./waf
	# install ndn-cxx
	sudo ./waf install
	cd ..

	# build libdash
	cd libdash/libdash
	mkdir build
	cd build
	cmake ../
	make dash # only build dash, no need for network stuff
	cd ../../../

	# build ns-3/ndnSIM with brite and dash enabled
	cd ns-3
	./waf configure -d optimized --with-brite=/home/$USER/ndnSIM/BRITE 
	./waf

The result should be something like this:

---- Summary of optional NS-3 features:
Build profile                 : optimized
Build directory               : /home/ckreuz/ndnSIM/ns-3/build
Python Bindings               : enabled
Python API Scanning Support   : not enabled (Missing 'pygccxml' Python module)
BRITE Integration             : enabled
NS-3 Click Integration        : not enabled (nsclick not enabled (see option --with-nsclick))
GtkConfigStore                : not enabled (library 'gtk+-2.0 >= 2.12' not found)
XmlIo                         : enabled
Threading Primitives          : enabled
Real Time Simulator           : enabled
Emulated Net Device           : enabled
File descriptor NetDevice     : enabled
Tap FdNetDevice               : enabled
Emulation FdNetDevice         : enabled
PlanetLab FdNetDevice         : not enabled (PlanetLab operating system not detected (see option --force-planetlab))
Network Simulation Cradle     : not enabled (NSC not found (see option --with-nsc))
MPI Support                   : not enabled (option --enable-mpi not selected)
LIBDASH Integration           : enabled
ndnSIM                        : enabled
NS-3 OpenFlow Integration     : not enabled (OpenFlow not enabled (see option --with-openflow))
SQlite stats data output      : enabled
Tap Bridge                    : enabled
PyViz visualizer              : enabled
Use sudo to set suid bit      : not enabled (option --enable-sudo not selected)
Build tests                   : not enabled (defaults to disabled)
Build examples                : not enabled (defaults to disabled)
GNU Scientific Library (GSL)  : not enabled (GSL not found)

Now install it and run a scenario to test it:

	sudo ./waf install


	# run a scenario
	./waf --run ndn-file-cbr

Info about libdash

If you have libdash already installed, make sure to specify the --with-dash option,e .g.:

./waf configure -d optimized --with-brite=/home/$USER/ndnSIM/BRITE --with-dash=/path/to/libdash

Make sure that the following files and subfolders are available in /path/to/libdash:

  • libdash/include/libdash.h
  • build/bin/libdash.so

These are standard-paths as created by the makefile for libdash.


Tutorial

Please take a look at this README, and the scenario template below.

Scenario Template

In addition, we also provide a scenario-template. All you need to do is download and install amus-ndnSIM once, and then continue with the amus-ndnSIM scenario template.


What is MPEG-DASH?

MPEG-DASH (ISO/IEC 23009-1:2012) is a standard for adaptive multimedia streaming over HTTP connections, which is adapted for NDN file-transfers in this project. For more information about MPEG-DASH, please consult the following links:


Citation

We are currently working on a technical report/paper. For now, you can cite it by using the following text: Christian Kreuzberger, Daniel Posch, Benjamin Rainer, and Hermann Hellwagner, "Demo: amus-ndnSIM -- Adaptive Multimedia Streaming Simulator for NDN"

Acknowledgements

This work was partially funded by the Austrian Science Fund (FWF) under the CHIST-ERA project CONCERT (A Context-Adaptive Content Ecosystem Under Uncertainty), project number I1402.

amus-ndnsim's People

Contributors

bcy avatar beichuan avatar bruinfish avatar cawka avatar chengyu avatar danposch avatar felixrabe avatar githeo avatar grassig avatar hilataba avatar hwyuan avatar ilyaucla avatar jeraldabraham avatar ltr120 avatar lucaswang avatar obaidamin avatar pesa avatar quevedo avatar sarantarnoi avatar shockjiang avatar spirosmastorakis avatar taylorchu avatar unscarlet avatar vslehman avatar wentaoshang avatar xinshengzzy avatar yic avatar yoursunny avatar yuzhang avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

db2t4 wuxy13

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.