How signetlabdei/desert_underwater works
DESERT Underwater is a C++ extension to NS-Miracle for designing and simulating underwater network protocols and carrying those protocols onto real-device experiments. The principal workflow is to configure an experiment, originate application traffic, route and deliver it through link and physical layers, and model or use an underwater channel. The README documents the ISO/OSI organization and real-device packers; sampled code also shows static routing, SUN path establishment, and multi-layer selection. Other protocol and modem variants are represented by their documented source-tree modules; their internal wiring was not inspected.
Main entry points: uwaloha.cpp Data-link protocols · uwphysical.cpp Physical layer · uwem-channel.cpp Underwater channels · uwmulti-stack-controller-phy.cc PHY controller
Components 20
Protocol stack
- Applications
DESERT_Framework/DESERT/application/uwApplication/uwApplication_module.cpp - Network routing
DESERT_Framework/DESERT/network/uwstaticrouting/uwstaticrouting.cpp - SUN routing
DESERT_Framework/DESERT/network/uwsun/sun-ipr-node-pathest-search.cpp - Data-link protocols
DESERT_Framework/DESERT/data_link/uwaloha/uwaloha.cpp
Physical environment
- Interference models
DESERT_Framework/DESERT/interference/uwinterference/uwinterference.cpp - Physical layer
DESERT_Framework/DESERT/physical/uwphysical/uwphysical.cpp - Underwater channels
DESERT_Framework/DESERT/channel/uwem_channel/uwem-channel.cpp - Propagation models
DESERT_Framework/DESERT/propagation/uwem_propagation/uwem-mpropagation.cpp - Node mobility
DESERT_Framework/DESERT/mobility/uwdriftposition/uwdriftposition.cpp
Device integration
- Device packers
DESERT_Addons/packer_uwApplication/packer_uwApplication.cc - Modem interface
DESERT_Framework/DESERT/physical/uwevologicss2cmodem/uwevologicss2cmodem.cpp - Position feed
DESERT_Addons/mobility_udpposition/udpposition.cpp
Cross-layer control
- Multi-PHY selection
DESERT_Addons/uwmulti_traffic_control/uwmulti-multiphy-controller.cpp - Stack switching
DESERT_Addons/uwmulti_stack_controller/uwmulti-stack-controller.cc - PHY controller
DESERT_Addons/uwmulti_stack_controller/uwmulti-stack-controller-phy.cc - PHY master
DESERT_Addons/uwmulti_stack_controller/uwmulti-stack-controller-phy-master.cc - PHY slave
DESERT_Addons/uwmulti_stack_controller/uwmulti-stack-controller-phy-slave.cc
Other components
- Experiment designer
- Real modem
- Position sender
Connections 18
- Experiment designer → Applications: configures
- Applications → Network routing: sends packets
- Network routing → Data-link protocols: forwards packets
- SUN routing → Data-link protocols: forwards packets
- Data-link protocols → Physical layer: passes frames
- Physical layer → Underwater channels: transmits
- Underwater channels → Propagation models: models propagation
- Interference models → Physical layer: models interference
- Node mobility → Underwater channels: supplies positions
- Device packers → Modem interface: adapts traffic
- Modem interface → Real modem: interfaces
- Position sender → Position feed: sends position
- Position feed → Node mobility: updates position
- Multi-PHY selection → Data-link protocols: selects MAC
- Stack switching → Data-link protocols: dispatches packets
- PHY controller → Physical layer: tracks PHY state
- PHY master → PHY controller: extends controller
- PHY slave → PHY controller: extends controller