首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UnetStack路由协议

UnetStack路由协议
EN

Stack Overflow用户
提问于 2018-09-27 03:56:36
回答 1查看 247关注 0票数 2
  1. 如何在水下网络中部署实验台来实验UnetStack声调制解调器通信的路由协议?
  2. 哪个调制解调器(型号)更适合这个实验?
EN

回答 1

Stack Overflow用户

发布于 2018-10-09 14:14:59

回答Q1

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

router代理(org.arl.unet.net.Router)根据其路由表进行分组路由。routesaddroutedelroutedelroutestodelroutes闭包允许手动修改路由表。只需在Unet shell中键入help router即可获得更多信息:

代码语言:javascript
复制
> 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以获得更多信息:

代码语言:javascript
复制
> 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文件中删除)并添加您自己的路由代理实现。您的路由代理必须支持路由服务:路由代理本质上接受任何目的地的数据报,并在下一跳发送它们。代理还侦听来自链接代理的数据报通知,如果它们是要路由的数据包,则在下一跳转发它们。通常,路由代理必须添加自己的报头,以根据正在实现的协议知道要路由哪些数据包以及路由到何处。

回答Q2

任何支持UnetStack的调制解调器都应该工作。这是一个目前支持列表的已知调制解调器的UnetStack。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52529221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档