IPv6-адресация, IPv6-адресация

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

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

Области применения

ОТ-области

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

  • Link-Local — все интерфейсы доступны посредством одной радиопередачи.
  • Mesh-Local — все интерфейсы доступны в одной сети потоков.
  • Глобальный — все интерфейсы доступны извне сети Thread.

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

Одноадресная рассылка

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

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

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

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

Топология OT RLOC

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

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

ОТ РЛОК16

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

0000:00ff:fe00:RLOC16

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

ОТ РЛОК

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

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

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

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

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

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

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

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

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

Mesh-Local EID (ML-EID)

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

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

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

Anycast-локатор (ALOC)

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

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

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

Многоадресная рассылка

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

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

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

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

Anycast

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

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

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

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

Резюме

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

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

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

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

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