Обзор протокола
Протокол IPv6 пришел на смену IPv4 в связи с острой нехваткой адресного пространства.
Отличия IPv6 от IPv4:
- Адрес состоит из 128 бит против 32 бит в IPv4
- Уменьшенный и упрощенный IP заголовок (состоит из 40 байт)
- Обязательное использование IPSec
- Нет необходимости в использовании NAT
- Улучшенная и упрощенная маршрутизация благодаря агрегированию адресов по континентам и странам
Адреса назначаются Региональным реестрам (Regional Internet Registry) Агентством интернета по назначению сетевых адресов (Internet Corporation of Assigned Network Numbers, ICANN). Всего существует 5 RIR (Североамериканский, Южноамериканский, Европейский, Тихоокеанский, Африканский). Далее реестры назначают адреса провайдерам, а те в свою очередь своим клиентам.
Вот как это выглядит:
Все адреса группируются с помощью префикса исходя из географических регионов. Таким образом, упрощается маршрутизация:
Континент |
RIR |
Назначенные адреса |
Северная Америка |
ARIN |
2001:600::/23 2001:1800::/23 2001:4800::/23 2600::/12 2610::/12 |
Европа, Ближний Восток, Центральная Азия |
RIPE NCC |
2001:600::/23 2001:800::/23 2001:a00::/23 2001:1400::/23 |
Азия, Тихоокеанский регион |
APNIC |
2001:200::/23 2001:e00::/23 2001:c00::/23 |
Африка, регион Индийского океана |
AfriNIC |
2001:4200::/23 |
Латинская Америка, Карибский регион |
LACNIC |
2880::/12 |
В IPv6 адреса принято записывать в шестнадцатеричной форме квартетами, разделенными двоеточиями. В каждом квартете по 2 байта. Всего таких квартетов 8:
Адрес состоит из 2-х частей: префикс, назначаемый провайдером и узел. Однако определенную долю узловой части при необходимости можно выделить и для подсети:
Структура точно такая же, как и у IPv4.
Маска всегда записывается с помощью косой черты, где указывается количество бит, отведенных под сетевую часть.
Адреса могут иметь и сокращенную форму записи. Например, адрес 2003:0000:0000:0001:0000:0000:0000:0010/4 можно записать так: 2003::1:0:0:0:10/4 либо так 2003:0:0:1::10/4. То есть опускаются нули, причем сокращать можно только 1 раз. Нельзя тот же адрес написать так: 2003::1::10.
Ниже представлены варианты сокращения для большего понимания:
Полный вариант записи |
Сокращенный вариант |
Ошибочный вариант |
2000:0000:0000:0000:0000:0000:0000:0000/8 |
2000::/8 |
2000:/3 2000/3 2::/3 |
2000:0000:0000:0000:0000:0000:0000:0010/20 |
2000::10/20 |
2000:10/20 2::10/20 |
2000:0000:0000:1111:0000:0000:0000:0001/32 |
2000::1111:0000:0000:0000:0001/32 2000:0000:0000:1111::1/32 |
2000::1111::1/32 |
2000:0000:0001:0002:0003:8000:0009:0a0b/48 |
2000::1:2:3:8000:9:a0b/48 |
2000::1:2:3:8:9:a0b/48 |
Присвоение адресов
В IPv6 адреса присваиваются одним из следующих способов:
Статически:
- Прописывается полностью весь адрес
- Прописывается только сетевой префикс (первые 64 бита). Идентификатор узла (последние 64 бита) автоматически настраивается посредством технологии EUI-64 (подробнее ниже).
Динамически:
- DHCPv6 с сохранением состояния (то есть сервер помнит кому и когда назначил адрес и остальные параметры). Работает также, как и DHCPv4.
- Автоконфигурация - хост узнает префикс подсети и шлюз по умолчанию посредством протокола NDP. Узловая часть настраивается посредством EUI-64.
EUI-64:
C помощью данной технологии настраивается узловая часть IP адреса. Достигается это с помощью МАС адреса интерфейса. В середину МАС адреса добавляются 2 байта FFFE, то есть получается всего 64 бита. 7-ой бит 1-го байта МАС адреса устанавливается в 1.
Выглядит это так:
Благодаря уникальности МАС адреса достигается и уникальность IP адреса.
В IPv6 существует и DHCPv6 без сохранения состояния.
Что это означает?
Сервер предоставляет определенную информацию по запросу, однако он не запоминает кому и когда он ее предоставил. Данный тип сервера не назначает IP адреса.
Какую информацию он может предоставить?
Например, информацию о DNS серверах. DHCPv6 без сохранения состояния используется совместно с методом автоконфигурации, так как данный метод только настраивает IP адрес интерфейса и шлюза по умолчанию и на этом все! Для обобщения вышесказанного приведу таблицу:
Способ назначения адреса |
Описание |
Статический |
Вручную весь 128-битный адрес |
Статический с EUI - 64 |
Вручную только 64-битный префикс узел - автоматически с помощью EUI-64 |
Динамический - DHCPv6 c сохранением состояния |
Весь 128-битный адрес |
Динамический - автоконфигурирование без сохранения состояния |
Префикс сети настраивается автоматически с помощью протокола NDP Узловая часть - с помощью EUI-64 |
Адресация. Типы адресов
В IPv6 существуют следующие типы адресов.
Одноадресатные (Unicast) - стандартные адреса, которые в свою очередь делятся на:
Глобальные (global) - публичный адрес, назначенный провайдером
Локальные (unique local) - аналогичные частным адресам в IPv4
Канальные (link local) - используются для работы протокола NDP. Назначаются автоматически самим хостом. Даже, если в сети нет DHCP и автоконфигурирование выключено, то у хоста в любом случае будет IP адрес. Именно этот тип адреса используется маршрутизаторами для вычисления маршрута. Канальные адреса используются только в локальных сетях и не маршрутизируются в сети интернет.
Многоадресатные (Multicast) - групповые адреса.
Одноадресатные резервные (Anycast) - групповой адрес. Всегда используется в качестве адреса получателя. Похож на адрес многоадресатной рассылки, однако на запрос отвечает всегда ближайшее устройство, в то время в случае многоадресатного адреса на запрос реагируют все устройства группы. Данный тип адресов используется только маршрутизаторами.
Широковещательные (broadcast) адреса протоколом IPv6 не поддерживаются. Вместо них используются многоадресатные адреса.
В таблице указаны диапазоны всех типов адресов:
Тип адреса |
Описание |
Префиксы |
Глобальный |
Уникальный маршрутизируемый через интернет |
2000::/12 2600::/12 и так далее |
Лоакальный |
Работают только в локальной сети |
FD00::/8 |
Канальный |
Используются протоколом NDP. Через интернет не маршрутизируются |
FE80::/10 FE90::/10 FEA0::/10 FEB0::/10 |
Многоадресатный |
Идентифицируют группу устройств. Могут использоваться в локальной сети и интернет |
FF00::/8 FF02::/16 |
Резервный |
Определяет группу получателей. Всегда используется в качестве адреса получателя. Маршрутизируется через интернет. |
Такой же, как и у глобального |
Network Discovery Protocol - NDP
Данный протокол был разработан специально для IPv6. Выполняет функции протоколов ARP, ICMP, Router Discovery, Router Redirect в IPv4 (то есть в IPv6 перечисленные протоколы отсутствуют).
К ним относят следующие функции протокола:
- Определение префикса подсети
- Обнаружение маршрутизатора/шлюза по умолчанию
- Обнаружение соседей в локальной сети
- Автоматическая настройка адреса интерфейса
- Разрешение сетевых и канальных адресов
- Определение параметров канала в подсети
- Определение следующего перехода (маршрутизатора) в сети
NDP поддерживает 5 типов пакетов ICMPv6:
- Запрос на доступность маршрутизатора (Router solicitation)
- Ответ маршрутизатора (Router advertisement)
- Запрос на доступность соседа (Neighbour solicitation)
- Ответ соседа (Neighbour advertisement)
- Перенаправление (Redirect)
Для работы протокола используются канальные (link local) адреса, которые вычисляются автоматически без участия DHCP сервера и маршрутизатора.
Принцип работы протокола очень прост. Например, хосту требуется узнать префикс подсети. Для этого он отправит запрос (Router Solicitation - RS) на доступность маршрутизатора. Причем запрос отправит по многоадресатному адресу FF02::2, который прослушивают только маршрутизаторы. Приняв запрос, маршрутизатор отправит ответ (Router Advertisement - RA) по адресу FF02::1, который прослушивают все хосты:
Кроме того, маршрутизаторы сами периодически рассылают необходимую информацию всем узлам в сети по адресу FF02::1.
Инициализация узла IPv6
После подачи питания узел IPv6 проходит процедуру инициализации, которая отличается от инициализации в IPv4:
- Вычисляется канальный адрес узла (FE80::/10) с помощью EUI-64
- Для определения префикса подсети, а также шлюза по умолчанию хост отправляет запрос маршрутизатору (Router socilitation). В качестве адреса отправителя выступает только что вычисленный канальный адрес, а в качестве адреса получателя выступает многоадресатный адрес FF02::2.
- Если хост настроен на DHCPv6 с сохранением состояния, то он принимает все необходимые сетевые параметры от сервера. Если настроена автоконфигурация, то вычисляется одноадресатный адрес с помощью EUI-64. Затем на сервер DHCPv6 без сохранения состояния отправляется запрос на получение информации о серверах DNS.
Миграция к IPv6
Так как сразу перейти на IPv6 нереально, то были разработаны методы для постепенной миграции на IPv6.
Двойной стек (Dual stack) - все сетевые устройства работают одновременно на IPv4 и IPv6. Постепенно роль IPv4 в данной сети уменьшается. Такое возможно в основном в локальных сетях.
Туннелирование. Для этого IPv6 пакеты инкапсулируются в пакеты IPv4 и передаются по сети IPv4. Дойдя до сети назначения пакет IPv6 извлекается и дальше самостоятельно “путешествует” по своей сети:
Существует несколько способов туннелирования.
Вручную настроенный туннель (Manually Configured Tunnels - MCT) - настраивается на конечных маршрутизаторах.
Динамический туннель “6to4” - создается динамический туннель от одного маршрутизатора до конечного. Конечная точка туннеля (IPv4 адрес) определяется по IPv6 адресу. Принцип работы прост. Выделяется специально зарезервированный адрес 2002::/16. Затем глобальный IPv4 адрес преобразуется в шестнадцатеричную форму и добавляется к адресу 2002::/16. Оставшиеся биты добавляются нулями.
Межсайтовый протокол автоматической туннельной адресации (Intra Site Automatic Tunnel Addressing Protocol, ISATAP) - динамически создает туннель, однако не работает, когда в сети присутствует преобразование NAT.
Teredo - туннель создается самими конечными узлами, которые поддерживают двойной стек. То есть компьютер инкапсулирует пакет IPv6 в пакет IPv4 и передает по сети IPv4. Принимающий компьютер проводит обратную процедуру.
Трансляция адресов IPv6 в IPv4 с помощью NAT-PT (Network Address Translation - Protocol Translation) - преобразует адреса IPv6 в адреса IPv4. Служит для взаимодействия сетей IPv6 и IPv4 друг с другом.