Christian Kreuzberger, Benjamin Rainer, Hermann Hellwagner, Modelling the Impact of Caching and Popularity on Concurrent Adaptive Multimedia Streams in Information-Centric Networks, In Proceedings of IEEE International Conference on Multimedia and Expo Workshops, IEEE, Los Alamitos, CA, USA, pp. 1-6, 2015. [bib] [pdf] [abstract]
Christian Kreuzberger, Daniel Posch, Hermann Hellwagner, A Scalable Video Coding Dataset and Toolchain for Dynamic Adaptive Streaming over HTTP, In Proceedings of the 6th ACM Multimedia Systems Conference (available not, ed.), ACM, New York, NY, USA, pp. 213-218, 2015. [bib][url] [doi] [pdf]
Daniel Posch, Christian Kreuzberger, Benjamin Rainer, Hermann Hellwagner, Using In-Network Adaptation to Tackle Inefficiencies Caused by DASH in Information-Centric Networks, In Proceedings of the 10th International Conference on Emerging Networking Experiments and Technologies, VideoNext Workshop (Colin Dixon, ed.), ACM Digital Library, New York, NY, USA, pp. 1-6, 2014. [bib] [pdf] [abstract]
Daniel Posch, Christian Kreuzberger, Benjamin Rainer, Hermann Hellwagner, Client Starvation: A Shortcoming of Client-driven Adaptive Streaming in Named Data Networking, In Proceedings of the 1st ACM Conference on Information-Centric Networking (Paulo Mendes, ed.), ACM Digital Library, New York, NY, USA, [bib][url] [doi] [pdf]

1 Comment

A while ago, the build process of ndn-cxx and ndnSIM was modified to building a shared library in favour of a static library. Unfortunately, there are some problems with (re-)building ndnSIM in its current version (dd516fe9ed73992d2f253a53fc5b21523c99a72a, June 24):

error while loading shared libraries: libndn-cxx.so.0.3.2: cannot open shared object file: No such file or directory

This is caused by the build process in combination with the location of libndn-cxx.so. On my system (ubuntu 14.04) the library is located at /usr/local/lib/, however, this is not a standard-path that waf/wscript looks for the library.
Nevertheless, with PKG CONFIG in place, this should not be a problem, all we need to do is use the information from PKG CONFIG and put it into the NS3_MODULE_PATH.
This can be achieved by modifying the ndnSIM wscript file (usually located in ns-3/src/ndnSIM).
conf.check_cfg(package='libndn-cxx', mandatory=True, uselib_store='NDN_CXX', args=['--libs', '--cflags'])

The change to the scenario template is exactly the same.

An alternative change is to create a symbolic link to libndn-cxx.so in /usr/lib/x86_64-linux-gnu (however I have not tested this).

1 Comment

Update Oct. 7th: As of version 2.1, ndn-cxx and NFD are now "integrated" in the ndnSIM git repository, therefore this post is now obsolete.

Update June 25th: ndn-cxx must be compiled as a shared library now! Changes are already included in this tutorial, but you must also follow the information provided here: ndn-cxx and ndnSIM - shared library problem.

If you ever wondered what you have to do to get ndnSIM + ndn-cxx run without having root access, then this is the right guide.
However, I do assume that SOMEONE does have root access and can install standard-libraries for you.
This is what it looks like on Ubuntu 14.04 (64 bit):

Make your administrator install the following packages (if not already installed)

sudo apt-get install build-essential libsqlite3-dev libcrypto++-dev libboost-all-dev
sudo apt-get install pkg-config git

And then continue with the following commands yourself (assuming you are in your home directory):

mkdir ndnSIM
cd ndnSIM
git clone https://github.com/named-data/ndn-cxx.git ndn-cxx
git clone https://github.com/named-data/ndn-cxx.git ndn-cxx
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/named-data/ndnSIM.git ns-3/src/ndnSIM
cd ndn-cxx
./waf configure --prefix /home/$USER/ndnSIM/usr/local/ --enable-shared --disable-static
./waf install

export LIBRARY_PATH=/home/$USER/ndnSIM/usr/local/lib/
export LD_LIBRARY_PATH=/home/$USER/ndnSIM/usr/local/lib/
export CPLUS_INCLUDE_PATH=/home/$USER/ndnSIM/usr/local/include/
cd ..
cd ns-3/

./waf configure --prefix /home/$USER/ndnSIM/usr/local/ -d optimized --disable-python
./waf install

You may copy the exports into your .bashrc file and adapt them like this:

export LIBRARY_PATH=/home/$USER/ndnSIM/usr/local/lib/:$LIBRARY_PATH
export LD_LIBRARY_PATH=/home/$USER/ndnSIM/usr/local/lib/:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/home/$USER/ndnSIM/usr/local/lib/pkgconfig
export CPLUS_INCLUDE_PATH=/home/$USER/ndnSIM/usr/local/include/:$CPLUS_INCLUDE_PATH

New Project: amus-ndnSIM
Blending Adaptive Multimedia Streaming (e.g., MPEG-DASH) with Named-Data Networking (NDN) using the ndnSIM simulation software.

Step 1: Install ndnSIM 2.0
Step 2: Invent a file transfer protocol
Step 3: Write a client that can download files
Step 4: Add multimedia streaming
Step 5: ???
Step 6: Come up with a cooler name
Step 7: Profit

What could go wrong?