Skip to content

Commit

Permalink
Prepare Mini-NDN release 0.7.0
Browse files Browse the repository at this point in the history
Change-Id: Ic7c9fe4a6838bda8e5897bf95ca22d5bea1f1589
  • Loading branch information
awlane committed Dec 16, 2024
1 parent 595cbda commit 73add71
Show file tree
Hide file tree
Showing 10 changed files with 115 additions and 166 deletions.
5 changes: 4 additions & 1 deletion AUTHORS.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ The specific contributions of individual authors can be obtained from the git hi
If you would like to become a contributor to the official repository, please follow the recommendations in https://github.com/named-data/.github/blob/master/CONTRIBUTING.md.

* Alexander Afanasyev <https://users.cs.fiu.edu/~afanasyev>
* Italo Valcy S Brito <https://github.com/italovalcy>
* Muktadir R. Chowdhury <https://github.com/alvyC>
* Damian Coomes <https://github.com/dmcoomes>
* ***(Maintainer)*** Saurab Dulal <https://dulalsaurab.github.io>
Expand All @@ -15,12 +16,14 @@ If you would like to become a contributor to the official repository, please fol
* Giovanni Grieco <https://github.com/GiovanniGrieco>
* ***(Maintainer)*** Alexander Lane <https://github.com/awlane>
* Vince Lehman <http://vslehman.com>
* Tianxing Ma <https://github.com/matianxing1992>
* Philipp Moll <https://github.com/phylib>
* Eric Newberry <https://ericnewberry.com>
* Varun Patil <https://github.com/pulsejet>
* Md Ashiqur Rahman (Mini-NDN Docker support) <[email protected]>
* Junxiao Shi <https://cs.arizona.edu/~shijunxiao>
* Jeff Thompson <https://remap.ucla.edu/jeff-thompson>
* Yucheng Zhang <https://peterskycloud.wixsite.com/yzportfolio>
* Italo Valcy S Brito <https://github.com/italovalcy>


Technical Advisors
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ Bug reports and feedback are highly appreciated and can be made through our

### Documentation

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:
Please refer to http://minindn.memphis.edu/ for installation, usage, and other documentation.
The documentation can also be built locally using:

./docs/build.sh

Expand Down
35 changes: 0 additions & 35 deletions docker/README.md

This file was deleted.

15 changes: 6 additions & 9 deletions docs/howtos.rst
Original file line number Diff line number Diff line change
Expand Up @@ -117,12 +117,9 @@ reached via external machines.
Generate NDN testbed topology
___________________________________________

Run the following install.sh command

::

python3 util/testbed_topo_generator.py

This will place a "testbed.conf" file in the topologies subdirectory,
where it can be referenced as desired. To update the topology, simply
rerun this command.
Visit the `NDN Play testbed <https://play.ndn.today/?testbed=1>`_
page and utilize the `MiniNDN Config` button after setting loss
and latency parameters. This will export an up to date topology
modeled on the testbed. We also provide a topology at
`topologies/testbed.conf`, which is based on a sample from 2020
which has latencies based on measurements from that configuration.
1 change: 1 addition & 0 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Mini-NDN: A Mininet-based NDN emulator
faq
hackathon
videos
authors

Helpful Links
-------------
Expand Down
69 changes: 50 additions & 19 deletions docs/install.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,51 @@ Install
Prerequisites
-------------

Mini-NDN is tested on the following Linux distributions:
Mini-NDN is officially supported on the following Linux distributions:

- Ubuntu 20.04 (recommended)
- Ubuntu 22.04
- Ubuntu 20.04
- Ubuntu 22.04 (recommended)
- Ubuntu 24.04
- Debian 11 (WiFi scenario does not work)
- Fedora 33 (WiFi scenario does not work)

You must have sudo privileges to install and run Mini-NDN.

Using Docker
------------

You can use the nightly build from GitHub package registry
::
docker run -m 4g --cpus=4 -it --privileged \
-v /lib/modules:/lib/modules \
ghcr.io/named-data/mini-ndn:master bash

NOTE: This nightly build is only currently supported for x86_64. ARM64 support
(i.e. Apple silicon Macs) will be added in the future.

Building your own Docker image
------------------------------

The provided Dockerfile can be used to build an image from scratch. To build with the Dockerfile:
- Clone the repository and type::

docker build -t minindn .

- You can then access the container through shell with::

docker run -m 4g --cpus=4 -it --privileged \
-v /lib/modules:/lib/modules \
minindn bin/bash

Additional recommendations
--------------------------
- It is recommended to set reasonable constraints on memory (`-m`) and CPU cores (`--cpus`), especially on less
powerful or non-dedicated systems.
- `--privileged` is mandatory for underlying `Mininet <http://mininet.org/>`_ to utilize the virtual switch
- The root directory on `run` is `/mini-ndn`, which contains the installation and examples.
- The GUI may not work for now due to docker and xterm setup issues and is independent from Mini-NDN.
If you intend to run the GUI, pass `-e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix` to the `docker run` command.

Using Vagrantfile
-----------------

Expand All @@ -26,8 +62,8 @@ Using install.sh

Mini-NDN has the following dependencies:

- `NDN Forwarding Daemon (NFD) <https://named-data.net/doc/NFD/>`_
- `Named Data Link State Routing (NLSR) <https://named-data.net/doc/NLSR/>`_
- `NDN Forwarding Daemon (NFD) <https://docs.named-data.net/NFD/current/>`_
- `Named Data Link State Routing (NLSR) <https://docs.named-data.net/NLSR/current/>`_
- `NDN Essential Tools (ndn-tools) <https://github.com/named-data/ndn-tools>`_
- `NDN Traffic Generator <https://github.com/named-data/ndn-traffic-generator>`_
- `infoedit <https://github.com/NDN-Routing/infoedit>`_
Expand All @@ -48,13 +84,6 @@ Some notable flags are:
This shortens installation time by downloading binary packages, but is only available on Ubuntu.
- ``--source`` prefers installing NDN software from source code.
- ``--use-existing`` will only install dependencies not already in the executable path.

IMPORTANT: For now, Mininet-WiFi only works with ``--source`` installation because the current NFD release (0.7.1) doesn't
incorporate `issue 5155 <https://redmine.named-data.net/issues/5155>`, a required patch for WiFi module to work properly.
With the next NFD release, Mininet-WiFi will work with both ``source`` and ``ppa``. Alternatively, you can
checkout (at your own risk) a third-party source "`Use NFD nightly with Mini-NDN <https://yoursunny.com/t/2021/NFD-nightly-minindn/>`", which provides
NFD-nightly version and contains all the necessary patches.

- ``--dummy-keychain`` patches ndn-cxx to use an in-memory dummy KeyChain, which reduces CPU overhead
and allows you to scale up Mini-NDN experiments. Large Mini-NDN experiments would run significantly
faster after applying this patch. However, your experiments cannot use any NDN security related
Expand All @@ -80,7 +109,7 @@ reinstall the software (``./waf && sudo ./waf install``).
Installing Dependencies
-----------------------

This section outlines how to install dependnecies manually.
This section outlines how to install dependencies manually.
If you used ``install.sh``, you do not need to perform these steps.

Mininet
Expand Down Expand Up @@ -122,20 +151,22 @@ ________________
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.
Mini-NDN uses ndn-cxx, 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
- To install ndn-cxx: https://docs.named-data.net/ndn-cxx/current/INSTALL.html
- To install NFD: https://docs.named-data.net/NFD/current/INSTALL.html
- To install NLSR: https://docs.named-data.net/NLSR/current/INSTALL.html
- To install ndn-tools: https://github.com/named-data/ndn-tools/blob/master/INSTALL.md

.. 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.
In cases where using NDN security is not important to the results, it is recommended
to use the dummy keychain patch for ndn-cxx to disable it for improved scalability.
This patch is located at `util/patches/ndn-cxx-dummy-keychain.patch.`

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
Expand Down
50 changes: 50 additions & 0 deletions docs/release-notes.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,56 @@
Release Notes
=============

Mini-NDN version 0.7.0 (Major changes since version 0.6.0)
----------------------------------------------------------

**Breaking Changes**:

- Install behavior regarding existing installation of dependencies has been reversed; by default, these are now ignored. This is meant
to clear up confusion regarding installing on existing installs which have been used for NDN development previously. The previous
behavior can be enabled using `--use-existing`.

**New features**:

- Added `NFDCBatch` to NFDC helper, which allows the user to use the existing NFDC wrapper API to instead create and execute a batch file.
When running large numbers of commands, this significantly speeds up performance due to not needing to add delay between individual CLI
calls.
- Added `MinindnAdhoc` class which can be used to construct adhoc Mini-NDN-Wifi networks from topology files.
- Model mobility parameters can now also be passed to Mini-NDN-Wifi via topology files.
- Working directory can be passed as constructor argument to `Minindn` objects
- We have added a new `--release` flag to the installer which simplifies installing matching releases of dependencies. Reference
`the install documentation <./install.rst>`__ for more information.
- Experimental wifi support for NLSR helper. See `experiment docs <experiment>` for details (`issue: 5232 <https://redmine.named-data.net/issues/5232>`__)
- Added a Dockerfile for Mini-NDN. A prebuilt image for *linux/amd64* platforms is available on the
`GitHub container registry <https://github.com/named-data/mini-ndn/pkgs/container/mini-ndn>`__
- The previous testbed topology generation script has been deprecated and removed. Please reference the `NDN Play website <https://play.ndn.today/?testbed=1>`__
for a replacement

**Improvements**:

- Ethernet unicast faces are now supported natively by NLSR wrapper, NFDC wrapper, and NDN routing helper. No additional formatting by the user is needed
for ethernet addresses extracted from the Mininet API when passed to these functions (`issue: 5321 <https://redmine.named-data.net/issues/5232>`__)
- `NdnRoutingHelper` has been parallelized along with minor optimizations. You can now also use it to create
permanent faces (`issue: 5264 <https://redmine.named-data.net/issues/5264>`__)
- `checkConvergence` method of `Experiment` helper can now output more detailed information when flag `returnConvergenceInfo` is set
(`issue: 5236 <https://redmine.named-data.net/issues/5236>`__)
- `getPopen` can now accept commands formatted as lists as well as strings
- We now natively edit nfd.conf files using infoconv to read and write it as json rather than calling infoedit at the shell
(`issue: 5318 <https://redmine.named-data.net/issues/5318>`__)
- Added Sprint PoP topology
- Link bandwidth value (`bw`) can now be specified as decimal megabits rather than only integers in topology files
- NFDC was significantly refactored for the `NFDCBatch` change.

**Bug fixes**:

- NFDC helper properly supports existing faces and no longer outputs unnecessary error messages if face exists by default.
- Fixed out of date ndnsec commands
- Socket path now defaults to NFD default as of release 24.07. You can specify a different path with the `defaultSocketLocation`
argument in the `Nfd` object constructor (`issue: 5309 <https://redmine.named-data.net/issues/5309>`__)
- Fixed jitter being parsed into incorrect type from topology files
- Moved vestigial CLI arguments relating to `wifi_ping.py` example out of the Mini-NDN-Wifi class


Mini-NDN version 0.6.0 (Major changes since version 0.5.0)
----------------------------------------------------------

Expand Down
2 changes: 1 addition & 1 deletion docs/videos.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Video Tutorials
===============

Maybe outdated since version 0.5.0.
May be outdated since version 0.5.0.

.. raw:: html

Expand Down
2 changes: 1 addition & 1 deletion minindn/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = '0.5.0'
__version__ = '0.7.0'
98 changes: 0 additions & 98 deletions util/testbed_topo_generator.py

This file was deleted.

0 comments on commit 73add71

Please sign in to comment.