2
  1. 如何部署测试平台来试验水下网络中 UnetStack 声学调制解调器通信的路由协议?
  2. 哪种调制解调器(型号)更适合这个实验?
4

1 回答 1

2

回答 Q1

当您启动 Unet 模拟器或支持 UnetStack 的调制解调器时,默认堆栈有两个与路由协议相关的代理。

router代理 ( )根据org.arl.unet.net.Router其路由表进行数据包路由。、routesaddroute和闭delroute包允许您手动修改路由表。只需输入Unet shell 即可获取更多信息:delroutestodelrouteshelp 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。和闭包允许您与此代理进行交互rreqtrace键入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 的已知调制解调器列表。

于 2018-10-09T14:14:59.053 回答