- 如何部署测试平台来试验水下网络中 UnetStack 声学调制解调器通信的路由协议?
- 哪种调制解调器(型号)更适合这个实验?
1 回答
回答 Q1
当您启动 Unet 模拟器或支持 UnetStack 的调制解调器时,默认堆栈有两个与路由协议相关的代理。
router
代理 ( )根据org.arl.unet.net.Router
其路由表进行数据包路由。、routes
、addroute
和闭delroute
包允许您手动修改路由表。只需输入Unet shell 即可获取更多信息:delroutesto
delroutes
help router
> 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)
rdp
代理 ( ) 填充代理的org.arl.unet.net.RouteDiscoveryProtocol
路由表router
。和闭包允许您与此代理进行交互rreq
。trace
键入help rdp
以获取更多信息:
> 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
如果您想实现自己的路由协议,最简单的选择是创建自己的代理来填充router
. 这是通过向代理发送RouteDiscoveryNtf
消息来完成的。router
对于许多路由协议来说,这已经足够了,而且很容易做到。
如果您的路由协议更复杂并且无法通过动态更改路由表来实现,您可以删除默认router
代理(从etc/setup.groovy
文件中)并添加您自己的路由代理实现。您的路由代理必须支持路由服务:路由代理本质上接受任何目的地的数据报,并在下一跳发送它们。代理还侦听来自Link代理的数据报通知,如果它们是要路由的数据包,则在下一跳转发它们。通常,路由代理必须添加自己的标头,以根据正在实施的协议知道要路由哪些数据包以及路由到哪里。
回答 Q2
任何支持 UnetStack 的调制解调器都应该可以工作。以下是当前支持 UnetStack 的已知调制解调器列表。