如何找到相邻节点的地址和位置坐标?

How to find the address and location coordinates of the neighbouring nodes?

我正在 UnetStack 中实现一个算法,我正在尝试编写一个代理来从相邻节点获取所需的参数。 我想向所有相邻节点发送广播消息,这些相邻节点应回复其地址和位置 coordinates.How 我可以实现吗?我知道我需要访问相邻节点的 NodeInfo 服务,但不确定广播传输和接收遵循什么服务/协议。

有几种方法可以做到这一点:

  1. 您可以发送 RangeReq,并将 requestLocation 设置为 true。这请求对等节点将其位置坐标传回。成功后,您将收到 RangeNtf 并填写了 location 字段。

示例 shell 使用 2 节点网络的会话:

> ranging << new RangeReq(to: 31, requestLocation: true)
AGREE
ranging >> RangeNtf:INFORM[from:232 to:31 range:999.99976 offset:-348702972
 rxTime:2042489677 peerLocation:1000.0,0.0,-15.0]
  1. 您可以使用远程服务请求信息。为此,请确保响应节点已启用远程控制 (remote.enable = true)。然后向它发送请求以将其位置发送给您,您很快就会收到 RemoteTextNtf.

示例会话:

> rsh 31, '?node.location'
AGREE
[31]: [1000.0, 0.0, -15.0]
  1. 您可以在每个节点上编写自己的代理 运行,并使用您自己的特殊 PDU 侦听特定 DatagramNtf,并使用从节点信息服务获取的信息响应这些信息。这是最灵活的,但需要您从头开始开发代理。

注意1和2都不是广播请求,而是针对特定节点的请求。如果你想用广播做类似于选项 2 的事情,你可以这样做:

> rsh 0, '?node.location'
AGREE
[31]: [1000.0, 0.0, -15.0]

但请记住,如果所有节点都试图立即响应,则此垫子无法很好地应对网络拥塞。如果这被证明是一个问题,选项 3 可能是您安排响应以管理网络负载的解决方案。