如何在unetstack中查找节点的可用邻居
我正在开发一个基于能量的路由协议,其中一个节点必须知道其可用的邻居,以便它能够获得邻居节点的能量细节并决定其下一跳 a) 如何查找节点的可用邻居 b) 在使用如何在unetstack中查找节点的可用邻居,unetstack,Unetstack,我正在开发一个基于能量的路由协议,其中一个节点必须知道其可用的邻居,以便它能够获得邻居节点的能量细节并决定其下一跳 a) 如何查找节点的可用邻居 b) 在使用PDU和RemoteGetParamReq时,哪种方法最适合检索邻居节点的能量?a)如果您正在编写自己的代理,您可以发送广播帧来查询邻居,并让邻居上的代理以随机回退的方式响应该帧(以避免MAC冲突)。另一种方法是使用RouteDisoveryReq(请参阅),将to地址设置为不存在的节点。这将导致所有1-hop邻居重新广播您的路由发现请求,
PDU
和RemoteGetParamReq
时,哪种方法最适合检索邻居节点的能量?a)如果您正在编写自己的代理,您可以发送广播帧来查询邻居,并让邻居上的代理以随机回退的方式响应该帧(以避免MAC冲突)。另一种方法是使用RouteDisoveryReq
(请参阅),将to
地址设置为不存在的节点。这将导致所有1-hop邻居重新广播您的路由发现请求,并且您将获得每个邻居的RouteDiscoveryNtf
演示hack的示例脚本(rdpdemo.groovy
):
b) 答案取决于你如何暴露你的能量信息。如果将其作为参数公开,则可以使用
RemoteGetParamReq
获取它。但是,如果您已经在代理中实现了某些协议,那么使用特定的PDU来传递信息就很容易了。Hi。请添加您已经尝试过的代码,以便我们可以查看它。先生,我使用RouteDiscoveryReq
来了解节点的1-hop邻居,但这里为了接收来自多个邻居的多个RouteDiscoveryNtf,我在for循环中使用receive()方法,并尝试使用getNextHop()在数组中存储nextHop值
这是一个错误。如何在数组中存储nextHop值?因为,我还试图使用RemoteGetParamReq
获取剩余能量,它作为PHY代理的参数公开。此外,RouteDiscoveryReq和RemoteGetParamReq在查询详细信息时都会消耗能量。请向我推荐一种更好的示例代码方法我已更新了上面的答案,包括如何使用RouteDiscoveryReq
查找邻居的代码示例。您是对的,路由发现和参数get本身将消耗能源,并且应该在对能源敏感的应用程序中节约使用。如果你负担不起询问他们的能量,你可以考虑对邻居进行“窥探”,倾听他们的传输并估计他们的能量。你也可以通过这种方式收集邻居的信息,除了那些碰巧很安静的邻居。谢谢你,先生。您的代码用于了解邻居,我还尝试使用RemoteGetParamReq
获取节点2的能量,该节点是节点1的邻居,但由于请求返回失败
,我无法获取能量。我从扩展调制解调器文件(MyHalfDuplexModem.groovy
)中使用phy
代理暴露了能量参数,在该文件中,我添加了能量建模,并且在其中,我还定义了getParameterList()
方法,该方法返回HalfDuplexModem
加上自定义调制解调器所需的所有枚举。我认为get()
方法无法找到我定义枚举的文件。Groovy或类文件必须位于类路径中。通常,在UNETSIM根文件夹中,<>代码>类>代码>在类路径中,因此考虑将类/ Groovy文件放在那里。
// settings
attempts = 1 // try only a single attempt at discovery
phantom = 132 // non-existent node address
timeout = 10000 // 10 second timeout
println 'Starting discovery...'
n = [] // collect list of neighbors
rdp << new RouteDiscoveryReq(to: phantom, count: attempts)
while (ntf = receive(RouteDiscoveryNtf, timeout)) {
println(" Discovered neighbor: ${ntf.nextHop}")
n << ntf.nextHop // add neighbor to list
}
n = n.unique() // remove duplicates
println("Neighbors: ${n}")
> rdpdemo
Starting discovery...
Discovered neighbor: 1
Discovered neighbor: 2
Neighbors: [1, 2]
>