2020-02-05 18:18:57 +00:00
|
|
|
# NRL Services
|
|
|
|
|
|
|
|
## Overview
|
|
|
|
|
2023-03-29 05:47:27 +01:00
|
|
|
The Protean Protocol Prototyping Library (ProtoLib) is a cross-platform library that allows applications to be built
|
|
|
|
while supporting a variety of platforms including Linux, Windows, WinCE/PocketPC, MacOS, FreeBSD, Solaris, etc as well
|
|
|
|
as the simulation environments of NS2 and Opnet. The goal of the Protolib is to provide a set of simple, cross-platform
|
|
|
|
C++ classes that allow development of network protocols and applications that can run on different platforms and in
|
|
|
|
network simulation environments. While Protolib provides an overall framework for developing working protocol
|
|
|
|
implementations, applications, and simulation modules, the individual classes are designed for use as stand-alone
|
|
|
|
components when possible. Although Protolib is principally for research purposes, the code has been constructed to
|
|
|
|
provide robust, efficient performance and adaptability to real applications. In some cases, the code consists of data
|
|
|
|
structures, etc useful in protocol implementations and, in other cases, provides common, cross-platform interfaces to
|
|
|
|
system services and functions (e.g., sockets, timers, routing tables, etc).
|
|
|
|
|
|
|
|
Currently, the Naval Research Laboratory uses this library to develop a wide variety of protocols.The NRL Protolib
|
|
|
|
currently supports the following protocols:
|
2020-02-05 18:18:57 +00:00
|
|
|
|
|
|
|
* MGEN_Sink
|
|
|
|
* NHDP
|
|
|
|
* SMF
|
|
|
|
* OLSR
|
|
|
|
* OLSRv2
|
|
|
|
* OLSRORG
|
|
|
|
* MgenActor
|
|
|
|
* arouted
|
|
|
|
|
|
|
|
## NRL Installation
|
|
|
|
|
2023-03-29 05:47:27 +01:00
|
|
|
In order to be able to use the different protocols that NRL offers, you must first download the support library itself.
|
|
|
|
You can get the source code from their [NRL Protolib Repo](https://github.com/USNavalResearchLaboratory/protolib).
|
2020-02-05 18:18:57 +00:00
|
|
|
|
|
|
|
## Multi-Generator (MGEN)
|
|
|
|
|
2023-03-29 05:47:27 +01:00
|
|
|
Download MGEN from the [NRL MGEN Repo](https://github.com/USNavalResearchLaboratory/mgen), unpack it and copy the
|
|
|
|
protolib library into the main folder *mgen*. Execute the following commands to build the protocol.
|
|
|
|
|
2020-02-05 18:18:57 +00:00
|
|
|
```shell
|
|
|
|
cd mgen/makefiles
|
|
|
|
make -f Makefile.{os} mgen
|
|
|
|
```
|
|
|
|
|
|
|
|
## Neighborhood Discovery Protocol (NHDP)
|
|
|
|
|
|
|
|
Download NHDP from the [NRL NHDP Repo](https://github.com/USNavalResearchLaboratory/NCS-Downloads/tree/master/nhdp).
|
2023-03-29 05:47:27 +01:00
|
|
|
|
2020-02-05 18:18:57 +00:00
|
|
|
```shell
|
|
|
|
sudo apt-get install libpcap-dev libboost-all-dev
|
|
|
|
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protoc-3.8.0-linux-x86_64.zip
|
|
|
|
unzip protoc-3.8.0-linux-x86_64.zip
|
|
|
|
```
|
2023-03-29 05:47:27 +01:00
|
|
|
|
2020-02-05 18:18:57 +00:00
|
|
|
Then place the binaries in your $PATH. To know your paths you can issue the following command
|
2023-03-29 05:47:27 +01:00
|
|
|
|
2020-02-05 18:18:57 +00:00
|
|
|
```shell
|
|
|
|
echo $PATH
|
|
|
|
```
|
2023-03-29 05:47:27 +01:00
|
|
|
|
|
|
|
Go to the downloaded *NHDP* tarball, unpack it and place the protolib library inside the NHDP main folder. Now, compile
|
|
|
|
the NHDP Protocol.
|
|
|
|
|
2020-02-05 18:18:57 +00:00
|
|
|
```shell
|
|
|
|
cd nhdp/unix
|
|
|
|
make -f Makefile.{os}
|
|
|
|
```
|
|
|
|
|
|
|
|
## Simplified Multicast Forwarding (SMF)
|
|
|
|
|
2023-03-29 05:47:27 +01:00
|
|
|
Download SMF from the [NRL SMF Repo](https://github.com/USNavalResearchLaboratory/nrlsmf) , unpack it and place the
|
|
|
|
protolib library inside the *smf* main folder.
|
|
|
|
|
2020-02-05 18:18:57 +00:00
|
|
|
```shell
|
|
|
|
cd mgen/makefiles
|
|
|
|
make -f Makefile.{os}
|
|
|
|
```
|
|
|
|
|
|
|
|
## Optimized Link State Routing Protocol (OLSR)
|
|
|
|
|
2023-03-29 05:47:27 +01:00
|
|
|
To install the OLSR protocol, download their source code from
|
|
|
|
their [NRL OLSR Repo](https://github.com/USNavalResearchLaboratory/nrlolsr). Unpack it and place the previously
|
|
|
|
downloaded protolib library inside the *nrlolsr* main directory. Then execute the following commands:
|
|
|
|
|
2020-02-05 18:18:57 +00:00
|
|
|
```shell
|
|
|
|
cd ./unix
|
|
|
|
make -f Makefile.{os}
|
|
|
|
```
|