Что такое IPv6
Содержание
IPv6 — это шестая версия интернет-протокола, которую придумали, чтобы починить проблемы IPv4. Главная фишка — адресов теперь до фига, так что старые проблемы с их нехваткой решены.
Длина адреса — 128 бит вместо 32 у IPv4. Это 2 в 128 степени адресов — на каждого человека на планете приходится куча адресов. Если давать каждому абоненту сеть /64, то на человека выходит больше 300 миллионов IP-адресов.
История создания
В конце 80-х стало понятно, что адреса кончаются. В начале 90-х, даже после введения бесклассовой адресации, стало ясно — этого мало.
К 1992 году появились разные предложения, и IETF объявила конкурс на создание IPng (IP Next Generation). 25 июля 1994 года утвердили модель IPng. К 1996 году вышла серия RFC, описывающих IPv6, начиная с RFC 1883.
Версию 5 пропустили — её отдали экспериментальному протоколу для видео и аудио.
Исчерпание IPv4-адресов
В 2003 году директор APNIC Пол Уилсон говорил, что адресов хватит на 10–20 лет. Cisco в 2005 году давала 4–5 лет.
Региональные регистраторы активно раздавали блоки IPv4 до 2010 года, потом адреса кончились. 3 февраля 2011 года IANA раздала последние пять блоков /8 между регистраторами.
К сентябрю 2015 года все регистраторы, кроме AfriNIC, объявили о нехватке. ARIN сказал, что адресов больше нет. Сейчас выдают блоками /22 (по 1024 адреса).
Появился рынок купли-продажи блоков IPv4. Цены росли несколько лет из-за спекулянтов — покупали, держали минимум и перепродавали дороже. К 2022 году рост цен остановился: спрос упал из-за роста IPv6-трафика, а те, у кого были запасы, боялись обвалить рынок. Дефицит всё ещё давит на цены и подталкивает к переходу на IPv6.
Сравнение с IPv4
Хотя адрес вырос с 4 до 16 байт, заголовок пакета увеличился всего вдвое — с 20 до 40 байт. Убрали функции, которые мешали маршрутизации:
- Фрагментация — маршрутизаторы больше не режут пакеты. Если пакет не проходит, его отбрасывают с ICMP-уведомлением о MTU следующего канала. Минимальный MTU подняли до 1280 байт. Фрагментировать можно только на стороне отправителя
- Контрольная сумма — убрали из заголовка. Ethernet и TCP/UDP и так имеют свои контрольные суммы. В IPv4 каждый раз при изменении Hop Limit приходилось пересчитывать
- Time to Live переименовали в Hop Limit
- Добавили метки потоков и классы трафика
- Поддержка джамбограмм до 4 гигабайт в сверхскоростных сетях
- Многоадресное вещание (Multicast) — широковещательные адреса IPv4 заменили на группы Multicast IPv6. Крайние адреса подсети теперь полноценные
Автоконфигурация SLAAC
Stateless Address Autoconfiguration — это когда адрес настраивается автоматически без DHCP-сервера.
Когда интерфейс включается, ему даётся локальный адрес с префиксом fe80::/10 и идентификатором интерфейса (обычно EUI-64 на основе MAC-адреса). Этот адрес работает только в пределах одного канального сегмента.
Узел шлёт ICMPv6-сообщение Router Solicitation на групповой адрес маршрутизаторов. Маршрутизатор отвечает Router Advertisement, где есть:
- Сетевой префикс
- Адрес шлюза
- Адреса DNS-серверов
- MTU и другие параметры
Объединив префикс и идентификатор, узел получает новый адрес. Для приватности идентификатор могут заменять на случайное число. Для админского контроля используют DHCPv6. Провайдеры могут делегировать префиксы клиенту.
Метки потоков
Поле Flow Label (20 бит) упрощает маршрутизацию однородного потока пакетов. Поток — это последовательность пакетов от отправителя к получателю с одинаковыми требованиями.
Отправитель генерирует случайное 20-битное число — метку потока. Когда приходит первый пакет, маршрутизатор анализирует дополнительные заголовки и запоминает результат (адрес следующего узла, опции и т.д.). Ключ для запоминания — адрес источника и метка потока. Остальные пакеты обрабатываются без детального разбора.
Запись в кэше живёт не больше 6 секунд (если не сказано иначе).
QoS и классы трафика
Приоритет задаётся первыми шестью битами поля Traffic Class. Три бита — класс трафика, ещё три — приоритет удаления. Рекомендованные коды:
| Класс | Назначение |
|-------|------------|
| 0 | Нехарактеризованный трафик |
| 1 | Заполняющий трафик (новости) |
| 2 | Несущественный информационный (e-mail) |
| 3 | Резерв |
| 4 | Существенный трафик (FTP, HTTP, NFS) |
| 5 | Резерв |
| 6 | Интерактивный (Telnet, SSH) |
| 7 | Управляющий (маршрутизация, SNMP) |
Безопасность
Стандарт IPv6 требует обязательной поддержки IPsec. В отличие от SSL/TLS, IPsec шифрует любые данные на сетевом уровне, включая UDP, без поддержки со стороны прикладного ПО.
Адресация IPv6
Три типа адресов:
- Unicast — одноадресные. Пакет идёт к конкретному интерфейсу
- Anycast — выглядят как Unicast, но адресуют группу интерфейсов. Пакет попадает в ближайший (по метрике маршрутизатора). Только для маршрутизаторов
- Multicast — многоадресные. Пакет доходит до всех интерфейсов группы. Делятся на Assigned (предопределённые) и Solicited (автоматически создаются при появлении Unicast-адреса из сети FF02:0:0:0:0:1:FF00::/104)
Типы Unicast-адресов:
- Глобальные (Global Unicast) — как публичные IPv4. Диапазон 2000::/3. Раздаются региональными регистраторами
- Link-Local (fe80::/10) — как APIPA в IPv4. Используются для Router Solicitation/Advertisement и обнаружения соседей
- Unique-Local (fc00::/7, fd00::/8) — как приватные сети IPv4 (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16). Описаны в RFC 4193
Зарезервированные адреса:
| Адрес | Префикс | Назначение |
|-------|---------|------------|
| ::/128 | — | Неуказанный адрес (аналог 0.0.0.0) |
| ::1/128 | — | Loopback (аналог 127.0.0.1) |
| ::ffff:0:0/96 | — | Отображённый IPv4 |
| 64:ff9b::/96 | — | NAT64 |
| 2001::/32 | Teredo | Туннели Teredo (RFC 4380) |
| 2001:db8::/32 | — | Примеры в документации |
| 2002::/16 | 6to4 | Туннели 6to4 (RFC 3056) |
| fe80::/10 | Link-local | Канальный уровень |
| fc00::/7 | Unique Local | Внутренние сети |
| ff00::/8 | Multicast | Многоадресная рассылка |
Формат пакета
Пакет состоит из основного фиксированного заголовка (40 байт), необязательных дополнительных заголовков и полезных данных (дейтаграмма транспортного уровня или данные сетевого уровня — ICMPv6, O
OSPF). Пакеты обычно инкапсулируются в Ethernet-кадры, но могут передаваться через туннели 6to4, 6in4 или Teredo для совместимости с IPv4-сетями.