获取MTD IPv6地址

Obtaining MTD IPv6 address

我的拓扑是:

T1 - T2 - T4
   - T3 -

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

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

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

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

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

希望对您有所帮助。

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

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

参见 git 上 cli_udp_example.cpp 的示例。

void UdpExample::HandleUdpReceive(otMessage *aMessage, const otMessageInfo *aMessageInfo)