Underwater Network Simulator
The UnetSim underwater network simulator enables a network engineer to simulate an underwater network on a single computer. It allows UnetStack agents and protocols to be simulated in realistic channel conditions, with minimum effort. The simulator was designed with two key goals:
- To be easy to learn and use, and
- To allow agent implementations to be shared between deployment environment and simulation environment (no porting required).
Essentially, once a protocol is developed and tested in simulation, it is ready to be deployed and tested at sea in any UnetStack-compatible modem.
The simulator is available free-of-charge for download from www.unetstack.net.
How does it work?
A simple script written in a domain-specific language (DSL) allows users to describe a simulation scenario in a natural way. This significantly reduces the barrier to entry for new users. A sample simulation DSL script is shown below:
channel.soundSpeed = 1500.mps
modem.dataRate = [800.bps, 2400.bps]
modem.frameLength = [16.bytes, 64.bytes]
modem.powerLevel = [0.dB, 0.dB]
simulate 1.hour, {
def buoy1 = node('Buoy-1', location: [0, 0, 0])
def buoy2 = node('Buoy-2', location: [1.km, 500.m, 0])
def auv1 = node('AUV-1', location: [0, 100.m, 0], mobility: true)
auv1.motionModel = [speed: 1.mps, turnRate: 1.dps]
}
The simulator is highly customizable, with the ability to support user-defined modem behavioral models, physics-based channel models, various motion models, customized trace file formats, etc.
Detailed documentation is available on the UnetStack documentation page.