Протокол IPv6 — базовая информация

В этой статье я расскажу самую базовую и основную информацию о протоколе IPv6, его работе, типах адресации и настройках.

Адресация IPv6

Адресация IPv6 представляется в виде 16-битных шестнадцатеричных групп, разделенных двоеточиями. Например,
3ffe:1944:0100:000a:0000:00bc:2500:0d0b.

Правила короткой записи:

1) Одна группа, состоящая только из нулевых сегментов, может быть представлена в виде двойного двоеточия (::).
2) Нули в начале каждой группы могут быть опущены.

Идентификатор подсети ипв6 записывается в нотации CIDR, т. е. просто указывается количество бит (например, /64).
::/0 представляет собой нулевой адрес (адрес по-умолчанию).
::/128 представляет собой «неопределенный» адрес; отличается от нулевого только длиной префикса.

Типы адресов

Адреса IPv6 могут быть трех типов: юникаст (unicast, одноадресный), эникаст (anycast) или мультикаст (multicast, многоадресный или групповой).
Функции броадкаста выполняет мультикастовый адрес «все узлы» (all-nodes).
Типы адресов определяются по их начальным битам:


Binary         Hex                  Тип адреса
------------   ---------    ------------------------------------
11111111       FF00::/8     Мультикаст
11111110 10    FE80::/10    Link-local unicast
11111110 11    FEC0::/10    Site-local unicast (устарели)
001            2000::/3     Global unicast(используются сейчас)

Global Unicast адресация

Глобальный юникаст-адрес ипв6 разбит на три секции:
Global routing prefix (48 бит)
Subnet ID (16 бит)
Interface ID (64 бита)

Local Unicast адресация

Адреса типа «Link-local unicast» уникальны только в пределах одного L2-линка.
Адреса типа «Site-local unicast» были определены в первоначальном стандарте IPv6, но были заменены на Unique Local Addresses (FC00::/7), согласно RFC 4193.

Anycast адресация

Эникаст представляет собой один адрес, сконфигурированный на нескольких оконечных узлах; динамический маршрут в идеале должен перенаправить трафик к «ближайшему» (или имеющему наименьшую стоимость) узлу, объявляющему в сеть такой эникаст-адрес.
Любой глобальный юникаст-адрес, назначенный более чем одному устройству, может рассматриваться как эникастовый.

Multicast адресация

Мультикаст представляет собой логическую группу устройств.
Структура мультикастового адреса:

  • Мультикастовый префикс (8 бит) — всегда 0xFF
  • Флажки (4 бита)
  • Область (4 бита)
  • ID группы (112 бит)

Области адресов:

  • 0x0 — Зарезервировано
  • 0x1 — Node-local
  • 0x2 — Link-local
  • 0x5 — Site-local
  • 0x8 — Org-local
  • 0xE — Global
  • 0xF — Зарезервировано

Встроенная (Embedded) адресация IPv4

Разные технологии перехода с 4-й версии на 6-ю используют разные способы встраивания IPv4 в IPv6.
Разные примеры для 10.23.1.5:

  • FE80::5EFE:10.23.1.5 (ISATAP)
  • ::FFFF:10.23.1.5 (SIIT)
  • FEC0:0:0:1::10.23.1.5 (TRT)
  • 2002:0A17:0105::/48 (6to4)

Заголовок IPv6

Заголовок IPv6 имеет фиксированную длину в 40 байт.
Формат заголовка:

  • Version (4 бита) — всегда равна 6
  • Traffic class (8 бит) — DiffServ Code Point (DSCP)
  • Flow label (20 бит) — произвольное поле для различения потоков трафика
  • Payload length (16 бит) — длина полезной нагрузки (без учета длины заголовка)
  • Next header (8 бит) — указывает на Extension Header или протокол верхнего уровня, следующий за заголовком IPv6
  • Hop limit (8 бит) — уменьшающийся счетчик узлов (TTL)
  • Source address (128 бит) — адрес отправителя
  • Destination address (128 бит) — адрес получателя

Расширенные заголовки (Extension Headers)

Расширенные заголовки дают возможность использовать дополнительные функции вроде опций «hop-by-hop» или шифрования IPsec.
Значения поля Next header:

  • 0 — Hop-by-hop options
  • 43 — Routing
  • 44 — Fragment
  • 50 — ESP
  • 51 — AH
  • 59 — Нет следующего заголовка
  • 60 — Destination options

Если заголовок — последний в стеке, его поле «next header» будет указывать на протокол верхнего уровня, следующего за ним (т. е. 6 для TCP либо 17 для UDP). В RFC 1883 определяется последовательность, в которой расширенные заголовки должны следовать друг за другом, если они используются.

ICMPv6

IPv6 использует собственную версию ICMP, описываемую в RFC 2463.
Как и в ICMPv4, ICMPv6 использует пары тип/код для определения типов полей.
Обычные типы полей:

  • 1 — Получатель недостижим
  • 2 — Пакет слишком велик
  • 3 — Превышен временной интервал
  • 4 — Проблема в параметре
  • 128 — Эхо-запрос
  • 129 — Эхо-ответ
  • 130 — Запрос на членство в группе
  • 131 — Отчет о членстве в группе
  • 132 — Членство в группе сокращено

Neighbor Discovery Protocol (NDP)

NDP описан в RFC 4861. Его функции:

  • определение маршрутизатора
  • определение префикса
  • определение параметра — MTU линка и т. д.
  • автонастройка адреса — замена DHCP
  • определение адреса — замена ARP
  • определение следующего узла — L2-адрес следующего прыжка
  • детекция недоступности соседей
  • детекция задвоенных адресов
  • перенаправление — маршрутизатор может проинформировать узел о наличии лучшего маршрута

Для обмена сообщениями в NDP используется ICMPv6.
Типы сообщений NDP:

  • Router Solicitation (RS) (Тип 133) — посылается хостом для запроса RA
  • Router Advertisement (RA) (Тип 134) — генерируется маршрутизаторами для объявления о собственном существовании
  • Neighbor Solicitation (NS) (Тип 135) — для определения L2-адресов и обнаружения задвоенных адресов
  • Neighbor Advertisement (NA) (Тип 136) — ответ на NS
  • Redirect (Тип 137) — используется маршрутизатором для информирования узла о наличии лучшего пути

Автонастройка адреса

На широковещательных линках ID интерфейса (вторая половина адреса IPv6) может генерироваться автоматически путем конвертации 48-битного MAC-адреса в 64-битный адрес EUI-64.
Конвертация MAC-to-EUI64:

  1. Между двумя 24-битными половинками MAC-адреса вставляется 0xFFFE
  2. Бит Universal/Local (7-й бит) меняется с 0 на 1

Например, MAC 0000:0A0B:1234 превращается в 0200:0AFF:FE0B:1234.
Идентификатор EUI-64 может быть объединен с префиксом типа «link-local» (FE80::/10) для формирования полного локального адреса линка.

Узел может получать глобальный адрес IPv6 при помощи stateful либо stateless автоконфигурации. Stateful использует DHCPv6 для запроса IPv6 с сервера. В stateless автоконфигурации узел просто добавляет ID своего интерфейса к префиксу, полученному из сообщения-объявления маршрутизатора (RA).

Duplicate Address Detection (DAD)

DAD применяется при первоначальной конфигурации всех адресов кроме эникаста. Новые адреса помечаются как предварительные и не могут быть использованы до тех пор, пока не будут проверены.

Neighbor Address Resolution

L2-информация о IPv6 соседях хранится в кэше соседей (похожем на кэш ARP в IPv4).

Privacy Addresses

RFC 3041 определяет частные адреса IPv6 для облегчения сохранения приватности, избегая привязки к статичному уникальному глобальному идентификатору (MAC) в качестве ID интерфейса. Частные адреса пользуются случайно сгенерированными ID интерфейсов, меняющимися на регулярной основе либо при получении нового префикса.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *