0

我的拓扑是:

T1 - T2 - T4
   - T3 -

Thread MTD 设备 (T4) 随机分配了它的 IPv6 地址。

如果我不知道该地址,如何将数据包从 T1(通过 NCP、wpan0 接口的 FTD)寻址到 T4。如何解决?

我尝试使用服务 API,但没有成功。是否可以在 MTD 上注册服务,如果可以,线程网络是否会将服务 RLOC16 分配给

4

2 回答 2

2

IPv6 地址和/或设备发现被视为应用层服务,超出了 Thread 的范围。其他人已经实现的一些应用层机制包括:

  1. 向特定于应用程序的服务器注册 IPv6 地址。这与您也可以使用的 DNS 非常相似。
  2. IPv6 多播查询使用具有单播响应的特定于应用程序的设备标识符。这与您也可以使用的 mDNS/DNS-SD 非常相似。

希望有帮助。

于 2018-05-29T20:32:19.733 回答
0

最简单的方法——我认为——是发送一个广播请求消息(使用多播地址,例如 ff03::2),每个设备都必须对此进行回复。

一旦您从设备获得响应消息,您应该也能够获得发件人的 IPv6 地址。发件人地址信息位于otMessageInfo.

请参阅git上cli_udp_example.cpp上的示例。

void UdpExample::HandleUdpReceive(otMessage *aMessage, const otMessageInfo *aMessageInfo)
于 2018-11-05T14:34:41.463 回答