Получение MTD IPv6-адреса - PullRequest
0 голосов
/ 26 мая 2018

Моя топология:

T1 - T2 - T4
   - T3 -

Устройства MTD с потоками (T4) назначают свой IPv6-адрес случайным образом.

Как адресовать пакеты на T4 с T1 (FTD через NCP, интерфейс wpan0), если я не знаю этот адрес.Как решить эту проблему?

Я пытался использовать Service API, но безуспешно.Может ли служба быть зарегистрирована на MTD, и если да, то сеть потоков назначит службу RLOC16 на

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Самый простой способ - я думаю - это отправить сообщение с запросом широковещания (с использованием многоадресного адреса, например, ff03 :: 2), на которое каждое устройство должно ответить.

Как только вы получите ответное сообщение от устройства, вы также сможете получить IPv6-адрес отправителя.Информация об адресе отправителя находится в otMessageInfo.

См. Пример в cli_udp_example.cpp в git.

void UdpExample::HandleUdpReceive(otMessage *aMessage, const otMessageInfo *aMessageInfo)
0 голосов
/ 29 мая 2018

IPv6-адрес и / или обнаружение устройства считаются сервисом прикладного уровня и не входят в область действия Thread.Некоторые механизмы уровня приложения, которые были реализованы другими, включают:

  1. Регистрация адреса IPv6 на сервере для конкретного приложения.Это очень похоже на DNS, который вы также можете использовать.
  2. Многоадресный запрос IPv6 с использованием идентификатора устройства для конкретного приложения и одноадресного ответа.Это очень похоже на mDNS / DNS-SD, который вы также можете использовать.

Надеюсь, это поможет.

...