- How to deploy a testbed to experiment routing protocols for UnetStack acoustic modems communication in an underwater network?
- Which modem (model) is more suitable for this experiment?

- 1,129
- 9
- 17

- 31
- 2
1 Answers
Answer to Q1
The default stack when you boot up a Unet simulator or a modem with UnetStack support has two agents that relate to routing protocols.
The router
agent (org.arl.unet.net.Router
) does packet routing based on its routing tables. The routes
, addroute
, delroute
, delroutesto
and delroutes
closures allow you to manually modify the routing tables. Just type help router
in the Unet shell to get more information:
> help router
router - access to routing agent
Examples:
routes // display routing table
routes 2 // display routes to node 2
addroute 27, 29 // add a route to node 27 via node 29
delroute 2 // delete route number 2
delroutesto 27 // delete all routes to node 27
delroutes // delete all routes
Parameters:
MTU - maximum data transfer size
auto1hop - automatically assume single hop routes
link - default link to use
routes - routing table (read-only)
The rdp
agent (org.arl.unet.net.RouteDiscoveryProtocol
) populates the routing table for the router
agent. The rreq
and trace
closures allow you to interact with this agent. Type help rdp
for more information:
> help rdp
rdp - access to route discovery protocol agent
Examples:
rreq 27 // start route discovery to node 27
rreq 27, 3, 2, 10 // find <3-hop route to node 27 with 2 RREQs 10s apart
trace 27 // trace current route to node 27
If you want to implement your own routing protocol, the easiest option is to create your own agent that populates the routing table for router
. This is done by sending RouteDiscoveryNtf
messages to the router
agent. For many routing protocols, this is sufficient, and easy to do.
If your routing protocol is more complicated and cannot be implemented by changing routing tables dynamically, you can remove the default router
agent (from etc/setup.groovy
file) and add your own routing agent implementation instead. Your routing agent must support the Routing service: A routing agent essentially accepts datagrams for any destination and sends them on the next hop. The agent also listens to datagram notifications from the Link agent, and forwards them on the next hop, if they are meant to be packets to be routed. Typically, a routing agent will have to add its own headers to know which packets are to be routed and to where, based on the protocol being implemented.
Answer to Q2
Any modem that supports UnetStack should work. Here's a list of known modems that currently support UnetStack.

- 2,110
- 6
- 14