Большинству администраторов понятно, что речь идет о новой версии протокола IP, но, как правило, этим познания и исчерпываются. Я предлагаю изучить вопрос подробней, ибо, если верить прогнозам, довольно скоро IPv6 из «таинственной новинки» превратится в привычный рабочий инструмент. Но для начала давайте поймем, чего не хватает IPv4 на современном этапе.

Что не так в IPv4

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

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

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

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

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

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

Чем лучше 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, идентификатор подсети и идентификатор интерфейса. Global Routing аналогичен идентификатору сети (Network ID) в IPv4 и присваивается провайдерам. Определяется он тремя первыми блоками.

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

Возьмем для примера  следующий адрес IPv6:

2001:0 f68:0000:0000:0000:0000:
   1986:69af/48

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

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

Адреса IPv6

В IPv6 существует три типа адресов: Unicast, Multicast и Anycast. C Unicast все просто, он определяет конкретный уникальный хост в сети. Multicast же идентифицирует группу хостов или интерфейсов, при отправке пакета на этот адрес пакет доставляется на каждый хост группы. Anycast тоже объединяет несколько хостов, но имеет от Multicast существенное отличие: пакет, посланный на адрес типа Anycast доставляется только ближайшему к отправителю участнику группы.

Еще одно отличие заключается в появлении нового протокола Neighbor Discovery (ND), который призван заменить широковещательные пакеты IPv4 типа Address Resolution Protocol (ARP), ICMPv4 Router Discovery и 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 довольно много. Если резюмировать, то, во-первых, можно забыть о широковещательных пакетах, ибо разрешение имен идет через Multicast. Во-вторых, устройства, использующие маршрутизатор, в случае если он недоступен, обнаруживают это и автоматически переключаются на другой. Поскольку ND работает на сетевом уровне, это дает возможность аутентифицировать и шифровать средствами IPSec такие задачи, как разрешение имен или обнаружение адреса маршрутизатора.

Выше мы уже рассмотрели типы адресов IPv6. На одном из них, а именно на Unicast, следует остановиться подробнее. Он бывает трех видов: Global Unicast, Link Local Unicast и Unique Local Unicast. Расскажу немного о каждом из них.

Global unicast эквивалентен «белому» адресу IPv4, он маршрутизируется в Internet и доступен на участке IPv6 в глобальной сети. Первые 48 бит адреса являются уникальными по Internet (Global Routing Prefix), а провайдер, используя следующие 16 разряда (идентификатор подсети) может создать до 65 536 подсетей. Пример сокращения нулей был показан на адресе вида 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

Приведем пример такого преобразования: узел 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), они также предназначены для работы в сетях, напрямую не связанных с Internet. Global Routing Prefix определяется первыми 8 бит и уже изначально задан (FD00::/8). Следующие 40 бит формируют Global ID, уникальный идентификатор, который представляет организацию. Он должен быть случайным, чтобы минимизировать вероятность совпадения с другими организациями. Такая уникальность позволит осуществить объединение сетей и настроить маршрутизацию без переконфигурирования. Еще 16 бит дают возможность создать 65,536 подсети и настроить маршрутизацию для внутреннего использования. Ну и наконец, последние 64 разряда отданы под уже знакомый идентификатор интерфейса (рисунок 3).

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

Самообслуживание

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

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

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

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

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

Адрес IPv6 выдается на фиксированное (либо бесконечное) время. Каждый адрес привязан к интерфейсу в течение определенного периода или времени жизни. По истечении времени жизни адрес теряет связь с интерфейсом и может быть присвоен другому хосту в Internet. Чтобы избежать возможных проблем, время жизни адреса делится на два этапа: preferred — этап гарантированного использования адреса, и deprecated — неопределенный период, когда адрес, возможно, будет вскоре утрачен. Новые соединения должны использовать адрес в состоянии preferred. Адреса в состоянии deprecated могут использоваться только приложениями, которые уже задействуют его и пока не могут переключиться на новый адрес. Для решения проблем с уникальностью IPv6-адресов существует специальный механизм Duplicate Address Detection. Маршрутизаторы также имеют адрес Link Local, полученный аналогичным образом.

От IPv4 к IPv6

Поскольку осуществить переход с 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 действительно развит, и во многом этому развитию способствовало огромное количество устройств и сервисов, используемых в стране. Не обошлось и без государственной поддержки в виде налоговых льгот для компаний, работающих с IPv6. В любом случае набором минимальных знаний об IPv6 системный администратор должен обладать, дабы не замирать в недоумении при виде результатов работы команды ipconfig в Windows 7.

Илья Рудь (irud@live.ru) — cертифицированный тренер Microsoft в Академии Ай-Ти, имеет звания MCSE, MCITP