RapidNet is a development toolkit for rapid simulation and implementation of network protocols. RapidNet integrates a declarative networking engine with ns-3 and thus provides it a declarative interface. Protocols in RapidNet are written in a declarative programming language called NDlog
, which stands for Network Datalog
. These protocols are compiled using the RapidNet Compiler
into C++ code that runs over the RapidNet Library
Current version of RapidNet is implemented over version ns-3.5.
The RapidNet compiler parses the input NDlog protocols and translates them into an intermediate form of event-condition-action (ECA) rules. This representation of the protocol is compiled into C++ code that runs as an application over ns-3.
The RapidNet library is an extension over ns-3. It implements the common utilities across all RapidNet applications like the database engine, database operators, handling of network events, the type system, expression trees and so on.
Refer to the Modules page for API documentation on the RapidNet library and compiler.
Following source folders are added to the base ns-3 for RapidNet:
- src/rapidnet: RapidNet library classes.
- values: RapidNet value types.
- tests: RapidNet unit test-cases.
- src/rapidnet-compiler: RapidNet compiler classes.
RapidNet adds a few example scripts in the examples folder. Additionally, a few Python scripts are added to the following folders for:
- rapidnet: Invoking the compiler, generating graphs etc.
- simulation: Running simulation experiments.
- emulation: Running emulation experiments.
Several sample RapidNet applications are included in the release:
- Ping Pong: src/applications/pingpong
- Neighbor Discovery: src/applications/discovery
- All-pairs Reachable: src/applications/reachable
- Path-vector: src/applications/pathvector
- Link State Periodic: src/applications/sim-ls-periodic
- Link State Periodic+Triggered: src/applications/sim-ls-triggered
- HSLS Periodic: src/applications/sim-hsls-periodic
- HSLS Periodic+Triggered: src/applications/sim-hsls-triggered
- DSR: src/applications/dsr
- Epidemic: src/applications/epidemic
- Chord DHT: src/applications/chord
The examples folder contains a few experiments to run a few of the above protocols:
- Ping Pong: examples/pingpong-test.cc
- All-pairs Reachable: src/applications/reachable-test.cc
- Path vector: src/applications/pathvector-test.cc
It also includes a generic runner script to simulate any protocol under different experimental settings. This script is: examples/rapidnet-app-simulator.cc. A similar script for emulation is examples/rapidnet-app-emulator.cc. See RapidNet How-To's for documentation on these scripts.
Refer to RapidNet How-To's for getting started with RapidNet.