| Install |
| ======= |
| |
| Prerequisites |
| ------------- |
| |
| For this guide, you will need a laptop/desktop with a recent version of |
| a Linux distro that is supported by Mininet. For this guide, the *Ubuntu 18.04 LTS* release was used. |
| Some tweaks maybe required to Mini-NDN's install.sh file for other distros. |
| Note that you'll need administrative privileges in order to download and install |
| extra packages and also to execute **Mini-NDN**. |
| |
| Using Vagrantfile |
| ----------------- |
| |
| With Vagrant installed, simply do ``vagrant up`` which will bring up an Ubuntu 18.04 virtual machine |
| and install Mini-NDN and all its dependencies on it. Please make sure to tweak the CPU core count |
| (default 4 cores) and RAM (default 4GB) according to your needs before doing vagrant up. Mini-NDN |
| can be found in /home/vagrant/mini-ndn which is a symlink to /vagrant if Vagrantfile was used from within mini-ndn cloned on the host. Otherwise it is an actual clone of mini-ndn. |
| |
| Using install.sh |
| ---------------- |
| |
| Mini-NDN depends on Mininet and NDN software to be installed in the system. |
| If you have all the dependencies (see sections below) **installed in the system** simply |
| clone this repository and run: |
| |
| :: |
| |
| ./install.sh -i |
| |
| The ``-i`` option uses ``setup.py develop`` to point the system install |
| to the current directory. So any changes made to the cloned ``mini-ndn`` |
| folder will be used without having to install it again to the system. |
| If you do not need to modify the core of Mini-NDN, then setup.py install (or pip install .) |
| can be used directly. See :doc:`experiment <experiment>` for more information on running. |
| |
| If you don't have the dependencies, the following command will |
| install them from source along with Mini-NDN. The dependencies include |
| Mininet, NDN core (ndn-cxx, NFD, Chronosync, PSync, NLSR), Infoedit, |
| and NDN Common Client Libraries (CCL). If you do not wish to install |
| the master versions of the NDN core or want to switch to specific versions, |
| you can edit the install.sh with release tags/specific versions. |
| |
| .. _scaling-note: |
| .. important:: |
| If you wish to scale Mini-NDN experiments and do not have use for security extensions |
| in your emulations, you should apply the ndn-cxx patch given in the ``patches`` folder |
| using ``./install.sh -p`` before running the following commands. The ndn-cxx patch is |
| taken from ndnSIM which provides an in-memory dummy KeyChain to reduce CPU computations. |
| After these patches are applied sleep time after NFD, nfdc, NLSR, etc. is not required |
| making the startup **MUCH** faster and scaling of Mini-NDN **MUCH** better. |
| |
| :: |
| |
| ./install.sh -a |
| |
| This pulls the NDN software from Github to ``ndn-src`` folder under the project. |
| |
| .. note:: |
| If any changes are made to ``ndn-src`` folder, please don't forgot to re-install |
| the sources to the system. |
| |
| To install without CCL, use: |
| |
| :: |
| |
| ./install.sh -mni |
| |
| See ``install.sh -h`` for detailed options. |
| |
| Installing Dependencies |
| ----------------------- |
| |
| Mininet |
| _______ |
| |
| Mini-NDN is based on Mininet. To install Mininet: |
| |
| :: |
| |
| git clone --depth 1 https://github.com/mininet/mininet.git |
| |
| After Mininet source is on your system, run the following command to |
| install Mininet core dependencies and Open vSwitch: |
| |
| :: |
| |
| ./util/install.sh -nv |
| |
| To check if Mininet is working correctly, run this test: |
| |
| :: |
| |
| sudo mn --test pingall |
| |
| This will print out a series of statements that show the test setup and |
| the results of the test. Look for ``Results:`` two-thirds of the way |
| down where it will indicate the percentage of dropped packets. Your |
| results should show "0% dropped (2/2 received)". |
| |
| NOTE: Mini-NDN, while providing a high level of emulation of hosts, |
| requires programs to be installed onto your computer. It will not work |
| if they are not installed. If you do not want NDN software installed |
| onto your computer, you can use a virtual machine, which can be quite |
| simply set up with the provided Vagrantfile. |
| |
| NDN dependencies |
| ________________ |
| |
| Each node in Mini-NDN will run the official implementation of NDN |
| installed on your system. The following dependencies are needed: |
| |
| Mini-NDN uses NFD, NLSR, and ndn-tools. |
| |
| - To install NFD: https://named-data.net/doc/NFD/current/INSTALL.html |
| - To install NLSR: https://named-data.net/doc/NLSR/current/INSTALL.html |
| - To install ndn-tools: https://github.com/named-data/ndn-tools |
| |
| .. warning:: |
| Please do not try to install NDN software from both the source (GitHub) and PPA (apt). |
| It will not work in most cases! If you used ./install.sh -a in the past but now want |
| to use apt, please run ``sudo ./waf uninstall`` in all the NDN projects before proceeding |
| with apt. Similarly, remove from apt if switching to source. |
| |
| Please see the :ref:`scaling-note <scaling-note>` to learn about disabling |
| security for better scalability. |
| |
| Note that all three of these can be installed from the Named Data PPA. |
| Instructions for setting it up can be found in the NFD installation |
| instructions. Note that PPA and installs from source **cannot** be |
| mixed. You must completely remove PPA installs from the system if switching |
| to source and vice-versa. |
| |
| For PPA installs, if you are using a custom nfd.conf file in an experiment, you should |
| place it in /usr/local/etc/ndn/ rather than /etc/ndn/. This is to avoid |
| a bug from the default configuration file for the PPA, which is |
| incompatible with Mini-NDN. |
| |
| Infoedit |
| ________ |
| |
| Infoedit is used to edit configuration files for NFD and NLSR. |
| To install infoedit: |
| |
| :: |
| |
| git clone --depth 1 https://github.com/NDN-Routing/infoedit |
| cd infoedit |
| make |
| sudo make install |
| |
| Verification |
| ------------ |
| |
| You can execute the following example to bring up the Mini-NDN command line |
| with NFD and NLSR running on each node: |
| |
| :: |
| |
| sudo python examples/mnndn.py |
| |
| You can use these steps to run the sample pingall experiment: |
| |
| 1. Issue the command: ``sudo python examples/nlsr/pingall.py`` |
| 2. When the ``mini-ndn>`` CLI prompt appears, the experiment has |
| finished. On the Mini-NDN CLI, issue the command ``exit`` to exit the |
| experiment. |
| 3. Issue the command: |
| ``grep -c content /tmp/minindn/*/ping-data/*.txt``. Each file should |
| report a count of 50. |
| 4. Issue the command: |
| ``grep -c timeout /tmp/minindn/*/ping-data/*.txt``. Each file should |
| report a count of 0. |