From 6c86e30f63b36a5949dc5717d8b53e13a71b66ae Mon Sep 17 00:00:00 2001 From: Ashlesh Gawande Date: Tue, 17 Sep 2019 22:27:05 -0500 Subject: [PATCH] **breaking** mini-ndn: re-design refs: #5062 Everything is now done through examples like Mininet. bin/minindn no longer provided as a binary installed in the system bin/minindnedit GUI: will no longer be maintained Remove cluster edition, will be re-introduced later Change-Id: Id4ef137cb2a04d1b0dd24d01941757363bbf7d26 --- .gitignore | 35 +- INSTALL.md | 92 - README.md | 19 +- Vagrantfile | 19 +- bin/minindn | 462 ---- bin/minindnedit | 1901 ----------------- docs/CLUSTER.md | 25 - docs/CONFIG.md | 68 - docs/EXPERIMENTS.md | 207 -- docs/GETTING-STARTED.md | 115 - docs/GUI.md | 81 - docs/Makefile | 20 + docs/RELEASE-NOTES.md | 176 -- docs/conf.py | 56 + docs/experiment.rst | 235 ++ docs/faq.rst | 48 + docs/hackathon.rst | 9 + docs/{CONNECT-TO-OUTSIDE.md => howtos.rst} | 92 +- docs/img/gui/cursor-tool.png | Bin 865 -> 0 bytes docs/img/gui/file-dropdown.png | Bin 29862 -> 0 bytes docs/img/gui/host-config.png | Bin 57983 -> 0 bytes docs/img/gui/host-tool.png | Bin 971 -> 0 bytes docs/img/gui/link-details.png | Bin 46861 -> 0 bytes docs/img/gui/link-tool.png | Bin 876 -> 0 bytes docs/img/gui/minindnedit.png | Bin 29749 -> 0 bytes docs/img/gui/switch-tool.png | Bin 9147 -> 0 bytes docs/index.rst | 29 + docs/install.rst | 174 ++ docs/introduction.rst | 40 + docs/minindnnet.svg | 126 ++ docs/release-notes.rst | 186 ++ docs/videos.rst | 18 + .../ip_rounting_experiment.py | 40 +- .../mnndn.py | 34 +- examples/nlsr/advertised-delayed-start.py | 79 + examples/nlsr/delayed_start.py | 64 + examples/nlsr/mcn_failure.py | 90 + examples/nlsr/multiple_failure.py | 109 + examples/nlsr/nlsr_common.py | 57 + examples/nlsr/pingall.py | 63 + examples/nlsr/prefix_propogation.py | 84 + examples/psync/full_sync.py | 81 + examples/psync/partial_sync.py | 67 + examples/static_routing_experiment.py | 100 + install.sh | 230 +- minindn/__init__.py | 1 + {ndn => minindn}/apps/__init__.py | 0 .../apps/app_manager.py | 49 +- .../apps/application.py | 39 +- minindn/apps/nfd.py | 74 + minindn/apps/nlsr.py | 258 +++ .../helpers}/__init__.py | 0 minindn/helpers/experiment.py | 107 + .../helpers/ip_routing_helper.py | 26 +- .../helpers/ndn_routing_helper.py | 288 ++- .../helpers/ndnpingclient.py | 28 +- {ndn/apps => minindn/helpers}/nfdc.py | 52 +- {ndn => minindn/helpers}/process_monitor.py | 19 +- minindn/minindn.py | 213 ++ {ndn => minindn}/util.py | 67 +- ndn/__init__.py | 24 - ndn/apps/ndn_global_routing_helper.py | 127 -- ndn/apps/nlsr.py | 242 --- ndn/conf_parser.py | 206 -- ndn/experiment_manager.py | 97 - ndn/experiments/experiment.py | 172 -- ndn/experiments/nlsr/__init__.py | 0 .../nlsr/advertise-delayed-start.py | 73 - ndn/experiments/nlsr/delayed-start.py | 66 - ndn/experiments/nlsr/failure_experiment.py | 65 - .../nlsr/mcn_failure_experiment.py | 79 - .../nlsr/multiple_failure_experiment.py | 80 - ndn/experiments/nlsr/prefix_propogation.py | 66 - ndn/experiments/psync/__init__.py | 0 ndn/experiments/psync/psync-full.py | 75 - ndn/experiments/psync/psync-partial.py | 59 - ndn/experiments/static_routing_experiment.py | 73 - ndn/gui.py | 156 -- ndn/ndn_host.py | 158 -- ndn/nfd.py | 71 - ndn/placer.py | 87 - ndn/remote_ndn_link.py | 90 - .../ndn-cxx-dummy-keychain-from-ndnsim.patch | 602 ++++++ requirements.txt | 3 +- setup.py | 7 +- 85 files changed, 3576 insertions(+), 5654 deletions(-) delete mode 100644 INSTALL.md delete mode 100755 bin/minindn delete mode 100755 bin/minindnedit delete mode 100644 docs/CLUSTER.md delete mode 100644 docs/CONFIG.md delete mode 100644 docs/EXPERIMENTS.md delete mode 100644 docs/GETTING-STARTED.md delete mode 100644 docs/GUI.md create mode 100644 docs/Makefile delete mode 100644 docs/RELEASE-NOTES.md create mode 100644 docs/conf.py create mode 100644 docs/experiment.rst create mode 100644 docs/faq.rst create mode 100644 docs/hackathon.rst rename docs/{CONNECT-TO-OUTSIDE.md => howtos.rst} (57%) delete mode 100644 docs/img/gui/cursor-tool.png delete mode 100644 docs/img/gui/file-dropdown.png delete mode 100644 docs/img/gui/host-config.png delete mode 100644 docs/img/gui/host-tool.png delete mode 100644 docs/img/gui/link-details.png delete mode 100644 docs/img/gui/link-tool.png delete mode 100644 docs/img/gui/minindnedit.png delete mode 100644 docs/img/gui/switch-tool.png create mode 100644 docs/index.rst create mode 100644 docs/install.rst create mode 100644 docs/introduction.rst create mode 100644 docs/minindnnet.svg create mode 100644 docs/release-notes.rst create mode 100644 docs/videos.rst rename ndn/experiments/nlsr/pingall_experiment.py => examples/ip_rounting_experiment.py (54%) rename ndn/experiments/ip_rounting_experiment.py => examples/mnndn.py (63%) create mode 100644 examples/nlsr/advertised-delayed-start.py create mode 100644 examples/nlsr/delayed_start.py create mode 100644 examples/nlsr/mcn_failure.py create mode 100644 examples/nlsr/multiple_failure.py create mode 100644 examples/nlsr/nlsr_common.py create mode 100644 examples/nlsr/pingall.py create mode 100644 examples/nlsr/prefix_propogation.py create mode 100644 examples/psync/full_sync.py create mode 100644 examples/psync/partial_sync.py create mode 100644 examples/static_routing_experiment.py create mode 100644 minindn/__init__.py rename {ndn => minindn}/apps/__init__.py (100%) rename ndn/experiments/arguments_experiment.py => minindn/apps/app_manager.py (51%) rename ndn/ndn_application.py => minindn/apps/application.py (54%) create mode 100644 minindn/apps/nfd.py create mode 100644 minindn/apps/nlsr.py rename {ndn/experiments => minindn/helpers}/__init__.py (100%) create mode 100644 minindn/helpers/experiment.py rename ndn/apps/routing_helper.py => minindn/helpers/ip_routing_helper.py (90%) rename ndn/apps/calculate_routing.py => minindn/helpers/ndn_routing_helper.py (68%) rename ndn/apps/ndn_ping_client.py => minindn/helpers/ndnpingclient.py (62%) rename {ndn/apps => minindn/helpers}/nfdc.py (62%) rename {ndn => minindn/helpers}/process_monitor.py (74%) create mode 100644 minindn/minindn.py rename {ndn => minindn}/util.py (56%) delete mode 100644 ndn/__init__.py delete mode 100644 ndn/apps/ndn_global_routing_helper.py delete mode 100644 ndn/apps/nlsr.py delete mode 100644 ndn/conf_parser.py delete mode 100644 ndn/experiment_manager.py delete mode 100644 ndn/experiments/experiment.py delete mode 100644 ndn/experiments/nlsr/__init__.py delete mode 100644 ndn/experiments/nlsr/advertise-delayed-start.py delete mode 100644 ndn/experiments/nlsr/delayed-start.py delete mode 100644 ndn/experiments/nlsr/failure_experiment.py delete mode 100644 ndn/experiments/nlsr/mcn_failure_experiment.py delete mode 100644 ndn/experiments/nlsr/multiple_failure_experiment.py delete mode 100644 ndn/experiments/nlsr/prefix_propogation.py delete mode 100644 ndn/experiments/psync/__init__.py delete mode 100644 ndn/experiments/psync/psync-full.py delete mode 100644 ndn/experiments/psync/psync-partial.py delete mode 100644 ndn/experiments/static_routing_experiment.py delete mode 100644 ndn/gui.py delete mode 100644 ndn/ndn_host.py delete mode 100644 ndn/nfd.py delete mode 100644 ndn/placer.py delete mode 100644 ndn/remote_ndn_link.py create mode 100644 patches/ndn-cxx-dummy-keychain-from-ndnsim.patch diff --git a/.gitignore b/.gitignore index 1ea55fa..e56d449 100644 --- a/.gitignore +++ b/.gitignore @@ -1,24 +1,19 @@ +# Python build -crypto -ChronoSync dist -doc/html -doc/latex -.DS_Store -examples -infoedit -jndn Mini_NDN.egg-info -mininet -NFD -NLSR -ndn-cpp -ndn-cxx -ndn-js -ndn-tools -openflow -PyNDN2 -PSync -util -.vagrant *.pyc + +# Docs +docs/html +docs/latex +docs/_build + +# Misc +.DS_Store +mininet +ndn-src +openflow + +# Vagrant +.vagrant diff --git a/INSTALL.md b/INSTALL.md deleted file mode 100644 index f263972..0000000 --- a/INSTALL.md +++ /dev/null @@ -1,92 +0,0 @@ -Mini-NDN Installation Instructions -================================ - -### What equipment will I need? - -For this guide, you will need a laptop/desktop with a recent version -of a Linux distro such as Ubuntu or any of its variants. Fedora is not -officially supported but has also been reported to work for some -users. For this guide, the _Ubuntu 18.04 LTS_ release was used. -Also, note that you'll need administrative privileges in order to -download and install extra packages and also to execute **Mini-NDN**. - -### Installing **Mini-NDN** - -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. - -If you have all the dependencies (see sections below) installed simply clone this repository and run: - - ./install.sh -i - -else if you don't have the dependencies, the following command will install them from source along with Mini-NDN: - - ./install.sh -a - -If you want to install the dependencies manually or from the Named Data PPA, follow the instructions below: - -### Installing NDN - -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 - -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 insallation instructions. Note that PPA and installs from source **cannot** be mixed. - -###Special Instructions 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 incompatiable with Mini-NDN. - -### Installing Mininet - -**Mini-NDN** is based on Mininet. To install Mininet: - -First, clone Mininet from github: - - 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)". - -### Installing Infoedit - -Infoedit is used to edit configuration files such as NFD configuration -file. - -To install infoedit: -https://github.com/NDN-Routing/infoedit - -### Verification - -You can use these steps to verify your installation: - -1. Issue the command: `sudo minindn --experiment=pingall --nPings=50` -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. \ No newline at end of file diff --git a/README.md b/README.md index 146d953..5a1d007 100644 --- a/README.md +++ b/README.md @@ -7,10 +7,9 @@ If you are new to the NDN community of software generally, read the ### What is Mini-NDN? Mini-NDN is a lightweight networking emulation tool that enables testing, experimentation, and -research on the NDN platform. Based on [Mini-CCNx](https://github.com/chesteve/mn-ccnx) which -is a fork of [Mininet](https://github.com/mininet/mininet), Mini-NDN uses the NDN libraries, -NFD, NLSR, and tools released by the [NDN project](http://named-data.net/codebase/platform/) -to emulate an NDN network on a single system. +research on the NDN platform based on [Mininet](https://github.com/mininet/mininet). +Mini-NDN uses the NDN libraries, NFD, NLSR, and tools released by the +[NDN project](http://named-data.net/codebase/platform/) to emulate an NDN network on a single system. Mini-NDN is open and free software licensed under the GPL 3.0 license. Mini-NDN is free to all users and developers. For more information about licensing details and limitations, @@ -25,9 +24,9 @@ Bug reports and feedback are highly appreciated and can be made through our ### Documentation -* [Installation](INSTALL.md) -* [Getting Started](docs/GETTING-STARTED.md) -* [Mini-NDN Edit](docs/GUI.md) -* [Running Experiments](docs/EXPERIMENTS.md) -* [Mini-NDN Redmine](http://redmine.named-data.net/projects/mini-ndn) -* [Contributor's Guide](https://github.com/named-data/NFD/blob/master/CONTRIBUTING.md) +Please refer to http://minindn.memphis.edu/ or [docs/index.rst](docs/index.rst) for installation, usage, and other documentation. +The documentation can be built using: + + ./install.sh -d + +and is available under `docs/_build/html`. diff --git a/Vagrantfile b/Vagrantfile index 6083675..f3bb364 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -2,18 +2,27 @@ # vi: set ft=ruby : $script = <