Обзор протокола IPv6

 

   Материал предоставлен редакцией журнала Системный администратор.
   Опубликовано в журнале "Системный администратор" N 11 2009 

   Многие стандарты передачи данных были разработаны более 30 лет назад, и
   современному администратору пора начинать обновление багажа знаний

   С выходом новых версий ОС Windows и соответственно обновленных служб
   нередко в списке изменений встречаются такие фразы, как "Добавлена
   поддержка IPv6" или "IPv6-совместимо". Большинству администраторов
   понятно, что речь идет о новой версии протокола IP, но, как правило,
   этим познания и заканчиваются. Я предлагаю немного разобраться с данным
   вопросом, ибо, если верить прогнозам, довольно скоро IPv6 перейдет из
   статуса таинственной новинки в повседневную реальность. Но для начала
   давайте поймем, чего не хватает IPv4 сегодня.

Проблемы IPv4

   Одной из основных проблем называют истощение адресного пространства.
   Напомню, что размер адресного пространства IPv4 равен 232, а это более
   чем 4 млрд узлов. С этим можно поспорить, фактически при использовании
   технологии NAT адресное пространство растягивается до бесконечности, но
   тогда появляется другая проблема, связанная со строго ограниченным
   количеством портов. Ясно одно - свободные, незарегистрированные адреса
   в ближайшие десять лет подойдут к концу, а по некоторым подсчетам
   "Время Х" наступит в течение ближайших двух-трех лет.

   Другим камнем в огород IPv4 считается неэффективная маршрутизация,
   которая заложена в самой идеологии протокола, что в свою очередь
   приводит к хранению на магистральных маршрутизаторах десятков тысяч
   маршрутов и, как следствие, чрезмерную их нагрузку, особенно при
   перестроении таблиц маршрутизации. Если в начале 90-х годов для
   размещения маршрутной таблицы в маршрутизаторе хватало 4-8 Мб, то
   сейчас требования к памяти превысили отметку в 100 Мб.

   Еще одним неотъемлемым атрибутом корпоративных сетей IPv4 является
   служба DCHP, отвечающая за выдачу IP-адресов клиентам. Если не
   учитывать такую "детскую" технологию, как APIPA, можно смело сказать,
   что встроенное автоконфигурирование в IPv4 отсутствует.

   На мой взгляд, самой серьезной проблемой IPv4 является безопасность.
   Несмотря на то что стек TCP/IP был разработан по инициативе
   Министерства обороны США, своим появлением он во многом обязан
   академической университетской среде, которую в то время возможность
   передачи данных волновала гораздо больше, чем сохранение их
   конфиденциальности. Появившиеся впоследствии протоколы IPsec, SSL, TLS
   были призваны решить проблему безопасности и отчасти ее решили, к
   сожалению, усложнив при этом управление передачей данных.

   После появления протокола IPv4 большую популярность получили потоковые
   мультимедиаприложения, VoIP и видеоконференции, которые требуют
   гарантированной пропускной способности и непревышения максимальной
   задержки, т.е. обеспечения качества обслуживания (Quality of Service).
   В IPv4 существует специальное поле Type of service, но механизм
   интерпретации и резервирования его определен не был, поэтому абсолютное
   большинство существующих маршрутизаторов попросту игнорируют это поле в
   заголовке IPv4.

   Список этот можно продолжить напоминанием о недостаточном размере
   заголовка IPv4 , но, я думаю, и этого вполне достаточно, чтобы будущее
   обратило внимание на IPv6. Так что же изменится с переходом на новый
   протокол?

Новый протокол

   Прежде всего это размер IP-адреса, в IPv6 он составляет 128 бит, что в
   четыре раза превышает размер адреса в IPv4. 128-битный адрес IPv6
   делится на части по 16 бит, которые в свою очередь преобразуются в
   четырехзначные шестнадцатеричные числа и разделяются двоеточиями. Форма
   такой записи получила название двухточечно-шестнадцатеричной. Пример
   IPv6-адреса: 21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A.

   Существует несколько способов сокращения записи IPv6-адресов. Первый из
   них заключается в удалении начальных нулей в каждом 16-битном блоке.
   Поскольку в каждом блоке должен остаться хотя бы один знак, адрес
   приобретет вид: 21DA:D3:0:2F3B:2AA:FF:FE28:9C5A.

   Второй вариант заключается в замещении одного блока или группы
   последовательных блоков, состоящих из нолей, на двойное двоеточие.
   Например, адрес 21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A можно
   превратить в 21DA:D3::2F3B:2AA:FF:FE28:9C5A, убрав начальные ноли и
   заменив нулевой блок на (::). Важно то, что в адресе может быть только
   одно двойное двоеточие, поэтому заменять следует либо какой-то один
   разряд, либо группу последовательных.

   Хорошим примером служит сокращение адреса многоадресной рассылки
   FF02:0000:0000:0000:0000:0000:0000:0002, который после применения
   правила принял вид FF02::2.

   Следующее изменение связано с отсутствием такого понятия, как маска
   подсети. IPv6-адрес делится на три части:

   Глобальный префикс (Global Routing Prefix) - аналогичен
   идентификатору сети (Network ID) в IPv4 и присваивается провайдерам.
   Определяется он тремя первыми блоками.

   Идентификатор подсети (Subnet ID) - представлен четвертым блоком и,
   по сути, очень похож на идентификатор подсети (Subnet ID) в IPv4.

   Идентификатор интерфейса (Interface ID) - аналог Host ID в IPv4,
   определяет уникальный адрес хоста вашей сети.

   Существует несколько способов получения уникального 64-битного
   идентификатора интерфейса: он может быть настроен вручную, определен
   DCHP-сервером или получен путем преобразования MAC-адреса сетевой
   карты. Вместо маски в IPv6 указывается префикс - это количество бит,
   которые определяют часть блоков, отвечающих за Global Routing Prefix.
   Пишется префикс через косую черту после самого адреса.

   Возьмем для примера IPv6-адрес:
   2001:0f68:0000:0000:0000:0000:1986:69af/48. Поскольку префикс (/48)
   указывает на первые 48 бит, можно сделать вид, что 2001:0f68:0000 будет
   являться частью Global Routing Prefix. Следующее поле, 0000, указывает
   на идентификатор подсети. Оставшиеся блоки 0000:0000:1986:69af - это
   идентификатор интерфейса.

   В IPv6 существует три различных типа адресов:

   Unicast - определяет конкретный уникальный хост в сети;

   Multicast - идентифицирует группу хостов или интерфейсов, при
   отправке пакета на этот адрес он доставляется на каждый хост группы;

   Anycast - тоже объединяет несколько хостов, но имеет существенное
   отличие от Multicast - пакет, посланный на Anycast-адрес, доставляется
   только ближайшему к отправителю участнику группы.

   Еще одно существенное отличие заключается в появлении нового протокола
   канального уровня модели OSI Neighbor Discovery, который призван
   заменить IPv4 широковещательные пакеты типа Address Resolution Protocol
   (ARP), ICMPv4 Router Discovery, and ICMPv4 Redirect на более
   эффективные Unicast- и Multicast-пакеты. Поскольку функций у Neighbor
   Discovery довольно много, их принято делить на функции Host-Router
   Discovery и Host-Host Communication.

   В первую группу попадает задача Router Discovery, как понятно по
   названию, это метод обнаружения хостом маршрутизаторов в своей
   локальной сети. Далее на ND висит задача определения префикса сети
   (Prefix discovery), который дает понять клиенту, в какой сети он
   находится. Кроме этого с помощью ND клиент получает от маршрутизатора
   информацию о том, как производится получение IP-адреса (через DHCPv6
   или через роутер), и дополнительные параметры, такие как максимальный
   размер пакета (Parameter Discovery).

   Задачи группы Host-Host Communication - это разрешение имен, замена тех
   функций, которые в IPv4 выполнялись протоколом ARP (IP в MAC), а также
   определение доступности партнера по передачи данных и выявление
   нарушения уникальности IP-адресов, то есть появления одинаковых IP.

   Плюсов у ND довольно много. Если резюмировать, то, во-первых, можно
   забыть о broadcasts-пакетах, ибо разрешение имен идет через Multicast.
   Во-вторых, устройства, использующие маршрутизатор, в случае если он
   перестает быть достижим, обнаруживают это и автоматически переключаются
   на другой (при его наличии). Поскольку ND работает на сетевом уровне,
   это дает возможность аутентифицировать и шифровать средствами IPSec
   такие задачи, как разрешение имен или обнаружение адреса
   маршрутизатора. И, конечно, автоконфигурация, несмотря на появление
   DHCPv6, значимость этой службы может оказаться под большим вопросом.

   Итак, мы определились с типами IPv6-адресов. На одном из типов, а
   именно на Unicast, следует остановиться подробней. Он бывает трех
   видов:

   Global Unicast - эквивалентен "белому" IPv4-адресу, он
   маршрутизируется в Интернете и доступен в IPv6-участке Глобальной сети.
   Первые 48-бит адреса являются уникальными по всему Интернету (Global
   Routing Prefix), а провайдер, используя следующие 16 бит (идентификатор
   подсети), может создать до 65536 подсетей (см. рис. 1). Пример
   сокращения нолей был показан на Global Unicast-адресе.

   
   Рисунок 1. Схема IPv6-адреса (Global Unicast)


   Link Local Unicast - уникальный IP-адрес, автоматически получаемый
   хостом вне зависимости от наличия в сети маршрутизаторов и
   DHCPv6-серверов. Генерируется адрес довольно просто. Глобальный префикс
   (Global Routing Prefix) изначально определен (fe80) и занимает лишь
   первые 10 бит адреса. Так как префикс стал короче (по сравнению
   с Global unicast-адресом), то пространство, отведенное под
   идентификатор подсети, увеличилось с 16 бит до 54 бит. А поскольку
   адрес LLU создан только для локальной сети, то данные биты не
   используются и выражаются нолями. Оставшиеся 64 бита (идентификатор
   интерфейса) получаются путем несложного преобразования 48-битного
   MAC-адреса компьютера (см. рис. 2).


   
   Рисунок 2. Схема IPv6-адреса (Link Local Unucast)


   Пример такого преобразования: Узел A имеет MAC-адрес Ethernet
   00-AA-00-3F-2A-1C. Сначала этот адрес преобразуется в формат EUI-64
   путем вставки разрядов FF-FE между третьим и четвертым байтами:
   00-AA-00-FF-FE-3F-2A-1C. Затем инвертируется бит U/L (седьмой бит в
   первом байте). Первый байт в двоичной форме имеет вид 00000000.
   При инвертировании седьмого бита он принимает вид 00000010 (0x02).
   Конечный результат, 02-AA-00-FF-FE-3F-2A-1C, после преобразования в
   двухточечно-шестнадцатеричную нотацию становится идентификатором
   интерфейса: 2AA:FF:FE3F:2A1C. Таким образом, сетевому адаптеру с
   MAC-адресом 00-AA-00-3F-2A-1C соответствует адрес локальной связи
   FE80:: 2AA:FF:FE3F:2A1C.

   Одной из главных задач Link Local Unicast является поддержка работы
   протокола Neighbor Discovery, именно поэтому адрес конфигурируется в
   любом случае. Передача данных внутри локальной сети осуществляется с
   использованием Link Local Unicast , даже при наличии
   сконфигурированного Global Unicast-адреса.

   Unique Local Unicast - идеологически напоминает IPv4-адрес из
   зарезервированных диапазонов (10.0.0.0/8 или 192.168.0.0/24). Они также
   предназначены для работы в сетях, напрямую не связанных с Интернетом.
   Global Routing Prefix определяется первыми 8 битами и уже изначально
   задан (FD00::/8). Следующие 40 бит формируют Global ID - уникальный
   идентификатор, который представляет организацию. Он должен быть
   случайным, чтобы минимизировать возможность совпадения с другими
   организациями. Такая уникальность позволит осуществить объединение
   сетей и настроить маршрутизацию без их переконфигурирования. Еще 16 бит
   дают возможность создать 65536 подсетей и настроить маршрутизацию для
   внутреннего использования. Ну и наконец, последние 64 бита отданы под
   уже знакомый идентификатор интерфейса (см. рис. 3).

   
   Рисунок 3. Схема IPv6-адреса (Unique Local Unicast)

   Одна из задач разработчиков протокола IPv6 состояла в предоставлении
   возможности автоконфигурирования интерфейсов. Важно понимать, что один
   интерфейс может иметь множество различных адресов IPv6. (В принципе, и
   при IPv4 интерфейс может иметь несколько адресов.) Таким образом,
   интерфейс может одновременно иметь Link Local и Global IPv6-адреса.

   Процесс автоконфигурации начинается с получения Link Local-адреса,
   проверки его уникальности и определения того, какая информация должна
   быть получена автоматически (адреса, дополнительные параметры или и то,
   и другое). В случае если надо автоматически получить адрес, то через
   какой механизм он должен быть сконфигурирован: stateless или stateful?

   Механизм stateless требует минимального конфигурирования
   маршрутизатора, при этом дополнительные серверы не нужны. При stateless
   механизме хост генерирует собственный адрес из локальной информации
   (MAC-адрес) и информации, предоставленной маршрутизатором.
   Маршрутизатор объявляет префикс, идентифицирующий подсеть, а хост
   использует уникальный идентификатор интерфейса. Соединив их вместе,
   хост получает адрес IPv6. В отсутствии маршрутизатора хост может
   сформировать только Link Local-адрес. Однако даже такой адрес дает ему
   возможность работать с машинами, находящимися в его подсети.

   Автоконфигурирование по механизму stateful производится с помощью
   DHCPv6. В случае stateful хост получает адрес интерфейса и/или другую
   информацию с сервера (адреса DNS, как вариант). Администратор сети
   может определить, какой способ будет использоваться при помощи
   специальных ICMPv6-сообщений Router Advertisement messages. Механизмы
   stateless и stateful могут дополнять друг друга и использоваться
   совместно.

   Stateless может использоваться, когда точные адреса непринципиальны.
   Stateful, наоборот - когда требуется выдача конкретных адресов
   конкретным хостам.

   Адрес IPv6 выдаётся на фиксированное (либо бесконечное) время. Каждый
   адрес привязан к интерфейсу в течение времени жизни. По истечении
   времени жизни адрес теряет связь с интерфейсом и может быть присвоен
   другому хосту в Интернете. Чтобы избежать возможных проблем, время
   жизни адреса делится на две стадии:

   preferred - использование адреса предпочтительно;

   deprecated - адрес, который вскоре будет утрачен.

   Новые соединения должны использовать адрес в состоянии preferred. Адрес
   deprecated может использоваться только приложениями, которые уже
   используют его и пока не могут переключиться на новый адрес. Для
   решения проблем с уникальностью IPv6-адресов существует механизм
   Duplicate Address Detection. Маршрутизаторы также имеют Link
   Local-адрес, полученный аналогичным образом.

Взаимодействие в смешанных средах

   Поскольку осуществить переход с IPv4 на IPv6 в короткий срок - задача
   неосуществимая, было разработано несколько технологий взаимодействия в
   смешанных средах. Это: туннелирование, двойной стек и трансляция
   протоколов.

   Суть туннелирования состоит в том, что пакет данных IPv6
   инкапсулируется в данные пакета IPv4. Такой пакет IPv4 содержит в себе
   два заголовка IPv6 и IPv4, что в свою очередь позволяет передавать его
   через обычные IPv4-сети. Он доставляется к узлу декапсуляции, где
   производится отбрасывание заголовка IPv4 и передача данных к
   IPv6-устройству. В зависимости от того, где происходит инкапсуляция и
   декапсуляция, выделяют три вида туннелирования: "Маршрутизатор -
   Маршрутизатор", "Хост - Маршрутизатор","Маршрутизатор - Хост".

   Реализация двойного стека подразумевает поддержку устройством
   одновременно протоколов IPv6 и IPv4. Первая поддержка двойного стека
   появилась в Windows XP и Windows Server 2003, где администраторы могли
   дополнительно установить компонент протокола IPv6.

   И последний вариант - трансляция протокола. Сама трансляция не что
   иное, как согласование двух протоколов путем преобразования сообщений,
   поступающих от одной сети в формат другой сети. Один из вариантов
   заключается в использовании протокол-шлюзов, размещенных на границах
   между IPv6-сетями и IPv4-сетями.

Зло или неизбежность?

   Пару лет назад, после публикации предварительного RFC, согласно
   которому переход на IPv6 должен завершиться до 2011 года, на одном из
   форумов был проведет опрос. Системным администраторам было задано два
   вопроса: планируют ли они переход на IPv6 и как они к нему относятся.

   Самыми популярными ответами стали: "Я еще не размышлял на эту тему" и
   "IPv6 - это неизбежное зло, с которым придется мириться". Результаты
   очень хорошо отражали развитие IPv6 в России. Хотя с того времени
   прошло около двух лет, ситуация кардинально не изменилась. Если верить
   сайту ipv6.ru, сегодня по количеству выделенных блоков IPv6-адресов
   Россия занимает 19-е место в Европе и 29-е место в мире. Посмотрев за
   пределы России, можно увидеть отсутствие поддержки IPv6 на большинстве
   популярных ресурсов, что явно не ускорит переход.

   В любом случае набором минимальных IPv6-знаний системный администратор
   должен обладать, дабы не впадать в ступор при виде результата ipconfig
   в Windows 7.

Источник статьи