IPv6-адресация

Посмотреть исходный код на GitHub

Давайте посмотрим, как Thread идентифицирует каждое устройство в сети и какие типы адресов они используют для связи друг с другом.

Сферы

Объемы ОТ

В сети Thread есть три области для одноадресной адресации:

  • Link-Local — все интерфейсы доступны для одной радиопередачи.
  • Mesh-Local — все интерфейсы доступны в одной сети Thread.
  • Global — все интерфейсы, доступные из-за пределов сети Thread.

Первые две области соответствуют префиксам, назначенным сетью потоков. Link-Local имеет префиксы fe80::/16 , а Mesh-Local имеют префиксы fd00::/8 .

Одноадресная передача

Существует несколько одноадресных адресов IPv6, которые идентифицируют одно устройство Thread. Каждый из них имеет свою функцию в зависимости от области применения и варианта использования.

Прежде чем мы подробно рассмотрим каждый тип, давайте узнаем больше об одном из них, называемом локатором маршрутизации (RLOC). RLOC идентифицирует интерфейс Thread на основании его положения в топологии сети.

Как создается локатор маршрутизации

Всем устройствам назначается Router ID и Child ID. Каждый маршрутизатор поддерживает таблицу всех своих потомков, комбинация которых однозначно идентифицирует устройство в топологии. Например, рассмотрим выделенные узлы в следующей топологии, где число в маршрутизаторе (пятиугольник) — это идентификатор маршрутизатора, а число в конечном устройстве (круг) — это дочерний идентификатор:

Топология OT RLOC

Идентификатор каждого дочернего маршрутизатора соответствует их родительскому (маршрутизатору). Поскольку маршрутизатор не является дочерним, идентификатор дочернего элемента для маршрутизатора всегда равен 0. Вместе эти значения уникальны для каждого устройства в сети потоков и используются для создания RLOC16, который представляет последние 16 бит RLOC.

Например, вот как рассчитывается RLOC16 для верхнего левого узла (идентификатор маршрутизатора = 1 и идентификатор дочернего элемента = 1):

ОТ РЛОК16

RLOC16 является частью идентификатора интерфейса (IID), который соответствует последним 64 битам адреса IPv6. Некоторые IID могут использоваться для идентификации некоторых типов интерфейсов Thread. Например, IID для RLOC всегда имеет следующую форму:

0000:00ff:fe00:RLOC16

IID в сочетании с префиксом Mesh-Local приводит к RLOC. Например, при использовании префикса Mesh-Local fde5:8dba:82e1:1::/64 RLOC для узла, где RLOC16 = 0x401 , будет следующим:

ОТ РЛОК

Эту же логику можно использовать для определения RLOC для всех выделенных узлов в примере топологии выше:

Топология OT с адресом

Однако, поскольку RLOC основан на расположении узла в топологии, RLOC узла может меняться по мере изменения топологии.

Например, возможно, узел 0x400 удален из сети Thread. Узлы 0x401 и 0x402 устанавливают новые ссылки на разные маршрутизаторы, и в результате каждому из них назначается новый RLOC16 и RLOC:

Топология OT после изменения

Типы одноадресных адресов

RLOC — это лишь один из множества одноадресных адресов IPv6, которые может иметь устройство Thread. Другая категория адресов называется идентификаторами конечной точки (EID), которые идентифицируют уникальный интерфейс потока в сетевом разделе потока. EID не зависят от топологии сети Thread.

Общие типы одноадресной рассылки подробно описаны ниже.

EID, который идентифицирует интерфейс потока, достижимый одной радиопередачей.
Пример fe80::54db:881c:3845:57f4
IID На основе расширенного адреса 802.15.4
Объем Link-Local
Подробности
  • Используется для обнаружения соседей, настройки ссылок и обмена информацией о маршрутизации.
  • Не маршрутизируемый адрес
  • Всегда имеет префикс fe80::/16

Mesh-локальный EID (ML-EID)

EID, который идентифицирует интерфейс потока независимо от топологии сети. Используется для доступа к интерфейсу Thread в том же разделе Thread. Также называется уникальным локальным адресом (ULA).
Пример fde5:8dba:82e1:1:416:993c:8399:35ab
IID Случайно, выбирается после завершения ввода в эксплуатацию
Объем Mesh-Local
Подробности
  • Не меняется при изменении топологии
  • Должен использоваться приложениями
  • Всегда имеет префикс fd00::/8

Локатор маршрутизации (RLOC)

Идентифицирует интерфейс Thread на основе его расположения в топологии сети.
Пример fde5:8dba:82e1:1::ff:fe00:1001
IID 0000:00ff:fe00: RLOC16
Объем Mesh-Local
Подробности
  • Генерируется после подключения устройства к сети
  • Для доставки дейтаграмм IPv6 в сети Thread
  • Изменения по мере изменения топологии
  • Обычно не используется приложениями

Локатор Anycast (ALOC)

Идентифицирует интерфейс потока с помощью поиска RLOC, когда RLOC адресата неизвестен.
Пример fde5:8dba:82e1:1::ff:fe00:fc01
IID 0000:00ff:fe00:fc XX
Объем Mesh-Local
Подробности

Глобальный индивидуальный адрес (GUA)

EID, который идентифицирует интерфейс Thread в глобальной области, за пределами сети Thread.
Пример 2000::54db:881c:3845:57f4
IID
  • SLAAC — назначается случайным образом самим устройством.
  • DHCP — назначается сервером DHCPv6.
  • Вручную — Назначается прикладным уровнем
Объем Глобальный
Подробности
  • Общедоступный IPv6-адрес
  • Всегда имеет префикс 2000::/3

Мультикаст

Многоадресная рассылка используется для одновременной передачи информации нескольким устройствам. В сети Thread определенные адреса зарезервированы для многоадресного использования с различными группами устройств, в зависимости от области действия.

IPv6-адрес Объем Доставлен в
ff02::1 Link-Local Все FTD и MED
ff02::2 Link-Local Все FTD
ff03::1 Mesh-Local Все FTD и MED
ff03::2 Mesh-Local Все FTD

Вы могли заметить, что спящие конечные устройства (SED) не включены в качестве получателя в приведенную выше таблицу многоадресной рассылки. Вместо этого Thread определяет адрес многоадресной рассылки IPv6 на основе префикса одноадресной рассылки на основе префикса одноадресной рассылки на основе локального канала и локальной области области, используемый для всех узлов потока, включая SED. Эти многоадресные адреса различаются в зависимости от сети Thread, поскольку она построена на префиксе индивидуальной адресации Mesh-Local (дополнительные сведения о многоадресных адресах IPv6 на основе префикса индивидуальной рассылки см. в RFC 3306 ).

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

Anycast

Anycast используется для маршрутизации трафика на интерфейс Thread, когда RLOC пункта назначения неизвестен. Локатор Anycast (ALOC) определяет расположение нескольких интерфейсов в разделе Thread. Последние 16 бит ALOC, называемые ALOC16, имеют формат 0xfc XX , который представляет тип ALOC.

Например, ALOC16 между 0xfc01 и 0xfc0f зарезервирован для агентов DHCPv6. Если конкретный RLOC агента DHCPv6 неизвестен (возможно, из-за изменения топологии сети), можно отправить сообщение на ALOC агента DHCPv6 для получения RLOC.

Thread определяет следующие значения ALOC16:

ALOC16 Тип
0xfc00 Лидер
0xfc010xfc0f Агент DHCPv6
0xfc100xfc2f Услуга
0xfc300xfc37 комиссар
0xfc400xfc4e Агент обнаружения соседей
0xfc380xfc3f
0xfc4f0xfcff
Сдержанный

Резюме

Что вы узнали:

  • Сеть потоков состоит из трех областей: Link-Local, Mesh-Local и Global.
  • Устройство Thread имеет несколько одноадресных IPv6-адресов.
    • RLOC представляет местоположение устройства в сети Thread.
    • ML-EID уникален для устройства Thread в разделе и должен использоваться приложениями.
  • Поток использует многоадресную рассылку для пересылки данных группам узлов и маршрутизаторов.
  • Поток использует произвольную рассылку, когда RLOC адресата неизвестен.

Чтобы узнать больше об IPv6-адресации потока, см. разделы 5.2 и 5.3 спецификации потока .

Проверьте свое понимание

Какие три области используются для одноадресной адресации в сети Thread?
Частный
Неправильно.
Локальный интерфейс
Неправильно.
Link-Local
Правильный.
Локальный сайт
Неправильно.
Mesh-Local
Правильный.
Глобальный
Правильный.
Что это значит, когда устройство имеет Child ID 0?
Устройство является дочерним.
Неправильно.
Устройство представляет собой ТРОСТЬ.
Близко, но неверно.
Устройство является маршрутизатором.
Правильный. Маршрутизатор всегда имеет дочерний идентификатор 0.
Камера, являющаяся узлом в сети Thread, получает новый RLOC16 и RLOC. Какое из следующих событий могло быть причиной этого?
Кто-то удаленно загрузил изображения с камеры.
Неправильно. Это событие не будет иметь никакого отношения к сети Thread.
Роутер выпал из сети.
Правильный. Когда маршрутизатор отключается от сети, топология сети изменяется, что может привести к тому, что устройство будет повышать статус до маршрутизатора и получать новый RLOC.
Камера перешла в спящий режим, что изменило топологию сети.
Неправильно. Переход в спящий режим не обязательно приведет к тому, что устройство получит новый сетевой адрес.
Устройство в сети Thread подписывается на многоадресный адрес ff03::2 . Что это говорит нам об устройстве?
Это минимальное конечное устройство (MED).
Неправильно.
Это полное конечное устройство (FED).
Неправильно. (Подсказка: это может быть, а может и не быть FED.)
Это устройство с минимальной резьбой (MTD).
Неправильно.
Это полнопотоковое устройство (FTD).
Правильный. Только полнопоточные устройства подписываются на многоадресный адрес ff03::2 . Они делают это в области Mesh-Local.
Какой тип адресации и маршрутизации использует Thread для пересылки данных группам узлов и маршрутизаторов?
одноадресная передача
Неправильно.
любая передача
Неправильно.
многоадресная рассылка
Правильный.
транслировать
Неправильно.
Какой тип адресации и маршрутизации использует устройство Thread, когда RLOC предполагаемого получателя сообщения неизвестен?
одноадресная передача
Неправильно.
любая передача
Правильный. Anycast позволяет устройству связаться с узлом, чей RLOC неизвестен, путем обращения к ALOC устройства.
многоадресная рассылка
Неправильно.
транслировать
Неправильно.