发布于 2018-10-09 14:14:59
回答Q1
当启动带有UnetStack支持的Unet模拟器或调制解调器时,默认堆栈有两个与路由协议相关的代理。
router代理(org.arl.unet.net.Router)根据其路由表进行分组路由。routes、addroute、delroute、delroutesto和delroutes闭包允许手动修改路由表。只需在Unet shell中键入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文件中删除)并添加您自己的路由代理实现。您的路由代理必须支持路由服务:路由代理本质上接受任何目的地的数据报,并在下一跳发送它们。代理还侦听来自链接代理的数据报通知,如果它们是要路由的数据包,则在下一跳转发它们。通常,路由代理必须添加自己的报头,以根据正在实现的协议知道要路由哪些数据包以及路由到何处。
回答Q2
任何支持UnetStack的调制解调器都应该工作。这是一个目前支持列表的已知调制解调器的UnetStack。
https://stackoverflow.com/questions/52529221
复制相似问题