Skip to content

Repository files navigation

          NRL SMF Source Code Distribution

The NRL Simplified Multicast Forwarding (nrlsmf) project includes software for a user-space forwarding engine. This software is was developed by the Naval Research Laboratory (NRL) PROTocol Engineering Advanced Networking (PROTEAN) Research Group. The goal of this effort is to provide an implementation of experimental techniques for robust, efficient distribution of broadcast or multicast packets in dynamic, wireless networks such as Mobile Ad-hoc Networks (MANETs).

The nrlsmf application can be run as a stand-alone application capable of providing "classic" flooding of broadcast and multicast traffic for a specified network interface or can be used in conjunction with a controlling program to perform more sophisticated multicast forwarding. An interprocess communication "remote control" interface is provided so that a compatible program (e.g. nrlolsr) may issue real-time commands to nrlsmf to control the multicast forwarding process. Both IPv4 and IPv6 operation are supported. Versions of nrlsmf can be built for the following operating systems: Linux, MacOS, BSD, Win32, and WinCE.

Build Instructions

Note that nrlsmf uses NRL "protolib" (https://github.com/USNavalResearchLaboratory/protolib) as a submodule. So use the following command to clone the nrlsmf repository and automatically pull in the correct version of the protolib source tree:

git clone --recurse-submodules https://github.com/USNavalResearchLaboratory/nrlsmf.git

For Unix platforms, the "nrlsmf/makefiles" directory in the source tree contains Makefiles for different platforms. So, to build nrlsmf, do the following:

cd makefiles; make -f Makefile. nrlsmf

to build the nrlsmf binary executable.

As an example for Linux, the 'make' command would be:

make -f Makefile.linux nrlsmf

For Win32 platforms, a distribution of "winpcap" is required to build the nrlsmf.exe executable. A Visual C++ solution (nrlsmf.sln) and project files are provided in the "makefiles/win32" directory for building nrlsmf.exe.

For WinCE (a.k.a. PocketPC) platforms, the "RawEther" library is required. The Rawether development kit is a commercial product available from http://www.rawether.net. (Note we are able to provide a binary distribution of nrlsmf.exe for WinCE platforms including the required Rawether libraries). A workspace (nrlsmf.vcw) and project files are provided for the Embedded Visual C++ compiler.

Documentation

The nrlsmf User's Guide source is in doc/nrlsmf.xml (DocBook XML). From the repository root, build HTML and PDF with:

make docs

Other documentation targets:

make docs-html # doc/nrlsmf.html only make docs-pdf # doc/nrlsmf.pdf only make clean-docs # remove generated doc outputs

Documentation dependencies (Debian/Ubuntu):

sudo apt install xsltproc docbook-xml docbook-xsl dblatex

Documentation dependencies (Fedora/RHEL):

sudo dnf install libxslt docbook-style-xsl docbook-dtds dblatex

To verify that the required tools and DocBook stylesheet paths are found:

make -C doc check-tools

Build a GitHub Pages bundle locally (doc/site/index.html, nrlsmf.pdf, and resources/):

make docs-site

After merging to the default branch and enabling GitHub Pages (Settings > Pages > Build and deployment > GitHub Actions), the User's Guide is published automatically by the "Deploy documentation" workflow. The HTML page includes a link to download the PDF, which is built and published alongside the HTML.

See doc/nrlsmf.html or doc/nrlsmf.pdf for a local copy after running make docs, or the published GitHub Pages site after merge.

About

NRL Simplified Multicast Forwarding (SMF) implementation (RFC 6621)

Topics

Resources

Stars

13 stars

Watchers

7 watching

Forks

Releases

Packages

Contributors

Languages