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

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

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

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

Операционные эндоскопы

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

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

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

Unicast

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

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

Как генерируется локатор маршрута

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

Топология OT RLOC

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

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

ОТ РЛОК16

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

0000:00ff:fe00:RLOC16

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

ОТ РЛОК

Аналогичную логику можно использовать для определения количества строк кода (RLOC) для всех выделенных узлов в приведенной выше схеме топологии:

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

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

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

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

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

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

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

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

Локальный EID сетки (ML-EID)

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

Маршрутный локатор (RLOC)

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

Anycast Locator (ALOC)

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

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

Идентификатор элемента (EID), который идентифицирует интерфейс потока в глобальном масштабе, за пределами сети потоков.
Пример 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 Mesh-Local Все FTD

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

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

Anycast

Anycast используется для маршрутизации трафика к интерфейсу Thread, когда RLOC назначения неизвестен. Anycast Locator (ALOC) определяет местоположение нескольких интерфейсов в пределах раздела Thread. Последние 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
Сдержанный

Краткий обзор

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

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

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

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

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