Internet Protocol version 6 (IPv6) представляет собой набор протоколов, которые придут на смену нынешнему стеку протоколов IPv4. IPv6 обладает целым рядом характеристик, необходимых для обеспечения дальнейшего развития Internet; прежде всего речь идет о расширенном адресном пространстве, которое позволит удовлетворить растущий спрос на адреса в таких регионах, как Африка, Азия, Китай и Средний Восток. Временные решения, например Network Address Translation (NAT), могут дать неплохие результаты на протяжении короткого промежутка времени, однако в долгосрочной перспективе они все-таки не годятся. Признавая, что будущее — за версией IPv6, правительства многих стран требуют, чтобы подведомственные им сети поддерживали стандарт IPv6. Это относится и к правительству США, которое в качестве даты перехода выбрало 30 июня 2008 г. Американским компаниям, которые имеют дело со структурами, использующими IPv6, придется реализовать этот стандарт, хотя бы для того, чтобы иметь возможность обмениваться данными с партнерами. Проще говоря, внедрив средства для работы с IPv6, организация может получить преимущество в конкурентной борьбе.

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

Средства Windows для работы с IPv6

Почти все современные операционные системы обладают совместимостью со стандартом IPv6 без какой-либо предварительной настройки. Более того, вполне вероятно, что в ваших сетях уже используется протокол IPv6, хотя вы об этом и не подозреваете. Корпорация Microsoft предусмотрела возможность использования этого протокола в системах Windows Vista, Windows 2003, XP SP1 и более поздних версиях, а также в версиях начиная с Windows CE .NET 4.1.

Совместимостью с IPv6 будет обладать и система Windows Server 2008. Специалисты Microsoft Research разработали стек протоколов IPv6 для Windows 2000 и для Windows NT, но он не реализован в этих системах. Информацию о том, как получить данный стек, можно найти по адресу (http://research.microsoft.com/msripv6/msripv6.htm ).

Функционирование стека IPv6 без предварительной настройки обеспечивает только Vista. Если в вашей сети установлена эта операционная система, значит, вы пользуетесь протоколами IPv6. Vista настраивает локальную привязку адреса при отсутствии аппаратной инфраструктуры IPv6, в частности серверов DHCP, маршрутизаторов, способных работать со стеком IPv6, и т. д. Сразу же после установки система Windows XP начинает функционировать в качестве клиента IPv6, т. е. позволяет осуществлять многие типичные виды взаимодействия (такие, как просмотр ресурсов Web с использованием протоколов HTTP или HTTPS) при помощи протоколов IPv6. Windows 2003 тоже позволяет осуществлять большинство операций по обмену данными с использованием IPv6.

Система адресации IPv6

Стек протоколов IPv6 наделен новыми средствами для уникальной адресации узла (или конечной системы). В версии IPv6 для уникальной идентификации узла выделяется 128 разрядов. В версии IPv4 для этого выделяется 32 разряда, что позволяет получить 4 млрд. возможных комбинаций. Однако практически доступно гораздо меньшее число комбинаций, что объясняется методом организации адресного пространства. С увеличением числа разрядов до 128 мы получаем такое количество адресов, которого будет достаточно на протяжении следующего тысячелетия — даже с учетом того, каким образом распределяются адреса.

Перед тем как перейти к вопросам распределения и использования адресов IPv6, стоит познакомиться с форматом, который применяется для их представления. Если в версии IPv4 применяется десятичное представление адреса с точкой (скажем, 192.168.16.10), то в версии IPv6 используется другой формат. Адрес IPv6 разделяется на восемь 16-разрядных блоков. Каждый блок представлен четырьмя шестнадцатеричными цифрами; при этом блоки отделены друг от друга двоеточием (:), например: 2001:0000:0000:e388:0092:fb7f:a827:fad6. Внутри каждого блока начальные нули можно опускать. После такой операции упомянутый адрес приобретет вид 2001:0:0:e388:92:fb7f:a827:fad6. Блоки нулей тоже можно опускать. Таким образом, наш адрес упрощается до представления 2001::e388:92:fb7f:a827:fad6. Обратите внимание на использование двойного двоеточия для отображения блоков нулей. Если в адресе имеется более одного блока следующих друг за другом нулей, опустить можно только один блок. Иначе нельзя будет восстановить исходный адрес.

По состоянию на сегодня узлам могут быть назначены три типа адресов IPv6: индивидуальный адрес (unicast), групповой адрес (multicast) и адрес рассылки до первого получателя (anycast). Индивидуальный адрес уникальным образом идентифицирует один интерфейс (или сетевое соединение) на узле (или виртуальный интерфейс на кластеризованных системах). Групповой адрес multicast подобен адресу multicast версии IPv4 и может быть назначен нескольким интерфейсам на нескольких узлах. Пакет с групповым адресом назначения доставляется всем интерфейсам на всех узлах, имеющих данный адрес. С другой стороны, пакет с адресом назначения до первого получателя доставляется только одному интерфейсу — ближайшему относительно интерфейса-отправителя.

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

Индивидуальные адреса

Каждый интерфейс может иметь более одного индивидуального адреса. Индивидуальный адрес может быть глобальным адресом провайдера Aggregatable Global Unicast Address (он же глобальный адрес — local address) или адресом LocalUse Unicast Address.

Рисунок 1. Глобальная одноузловая адресацияГлобальный адрес. Глобальный адрес уникален для интерфейса, которому он назначен. Его можно использовать для обращения к данному интерфейсу из любого другого. Глобальные адреса IPv6 имеют иерархическую структуру и содержат сведения о маршрутизации. На рис. 1 показан формат глобального адреса. Первые три разряда индивидуального адреса (именуемые префиксом формата — Format Prefix, FP) всегда выражаются цифрами 001. Префиксы формата могут быть различной длины (так, префикс формата адреса групповой рассылки состоит из восьми разрядов). Следующие 13 бит приходятся на идентификатор агрегации верхнего уровня, Top-Level Aggregation Identifier (TLA ID). Этот идентификатор назначается поставщикам услуг Internet высшего уровня, число которых может достигать 8192.

Следующий компонент адреса — зарезервированное поле длиной в восемь разрядов, предназначенное для расширения TLA ID в будущем. Далее в адресе содержится поле идентификатора агрегации следующего уровня, Next-Level Aggregation Identifier (NLA ID). Это поле (длина его составляет 24 разряда) используется поставщиками услуг Internet верхнего уровня для организации сетей или для поддержки провайдеров Internet второго эшелона, каждому из которых назначается один или несколько идентификаторов NLA ID.

Эти объединенные 48 разрядов уникальным образом идентифицируют сайт, принадлежащий клиенту поставщика услуг Internet высшего уровня или второго эшелона. Транснациональная корпорация, например, может иметь несколько сайтов. IPv6-соединение каждого сайта будет иметь 48-разрядный адрес, уникальный для этого сайта. Далее, каждый сайт может использовать следующие 16 разрядов адреса, которые именуются идентификатором агрегации уровня сайта, Site-Level Aggregation Identifier, (SLA ID) для разделения сайта на подсети. Каждый сайт может включать в себя до 65 535 подсетей. Можно использовать и другое решение. Если компания имеет несколько сайтов, но только одно соединение с Internet-провайдером по протоколу IPv6, она может применять идентификатор SLA ID для маршрутизации пакетов между сайтами и до соединения. Последнее поле глобального адреса — идентификатор интерфейса Interface ID. Оно включает 64 разряда. Это поле аналогично реализованному в IPv4 идентификатору хоста (host identifier), который идентифицирует хост в сети.

Индивидуальный адрес Local-Use Unicast Address. Имеется два типа таких адресов. Первый называется физическим адресом локальной связи (локальной привязки address) и используется для коммуникаций между интерфейсами, принадлежащими узлам на одной связи. Второй — адрес локального сайта (привязки к сайту address) — используется для коммуникаций между интерфейсами, принадлежащими узлам сайта. Оба указанных адреса являются реальными альтернативами глобального адреса в зависимости от широты диапазона. На рис. 2 показан диапазон связи и сайта.

Рисунок 2. Диапазон адресов IPv6

Адресация локальной привязки подобна применяемой в версии IPv4 системе адресации Automatic Private IP Addressing (APIPA). Адреса локальной привязки начинаются с префикса формата FE80. Последние 64 разряда адреса локальной привязки отводятся под идентификатор интерфейса, а биты между префиксом и идентификатором интерфейса уменьшаются до нуля. Как и в случае с APIPA, адреса локальной привязки конфигурируются автоматически, без использования сервера DHCP или ручной настройки. В сущности, каждый оснащенный средствами IPv6 интерфейс автоматически получает адрес локальной привязки. Если в сети имеются узлы, которые поддерживают интерфейсы, оснащенные средствами IPv6, они, скорее всего, имеют адреса локальной привязки и, возможно, направляют в сеть пакеты в рамках процедуры обнаружения соседа, Neighbor Discovery. Два узла, расположенные на одном соединении и имеющие интерфейсы, которые поддерживают IPv6, автоматически получают возможность взаимодействовать друг с другом без какой-либо дополнительной настройки или управления. Однако обмен данными с помощью адресов ограничивается соединением: оснащенные средствами IPv6 маршрутизаторы не должны передавать пакеты с исходными или целевыми адресами локальной привязки.

Адреса привязки к сайту подобны частным адресам в версии IPv4, которые имеют сетевые идентификаторы 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16. Адреса привязки к сайту всегда начинаются с префикса формата FEC0:. Как и в адресах локальной привязки, последние 64 разряда адреса отводятся под идентификатор интерфейса. 16 младших разрядов из 64 старших, составляющих поле идентификатора подсети, уникально идентифицируют подсети сайта; в этом отношении данное поле аналогично полю SLA ID глобального адреса. Количество разрядов между префиксом формата и полем идентификатора подсети сокращается до нуля.

В версии IPv6 используются два особых постоянных адреса. Первый называется неуточненным адресом (unspecified address) и всегда обозначается как 0:0:0:0:0:0:0:0 или для краткости ::. Этот адрес (так же, как и применяемый в версии IPv4 адрес 0.0.0.0) играет роль исходного адреса в ситуациях, когда других адресов нет (например, когда оснащенному средствами IPv6 серверу DHCP направляется запрос на IP-адрес). Второй адрес называется адресом замыкания на себя и всегда обозначается как 0:0:0:0:0:0:0:1 или просто ::1. Этот адрес (в версии IPv4 ему соответствует адрес замыкания на себя 127.0.0.1) можно использовать для локального тестирования приложений и для конфигурации. На адрес замыкания на себя реагирует каждый интерфейс.

Идентификатор интерфейса

Идентификатор интерфейса — это индивидуальный адрес, длина которого всегда составляет 64 разряда. Такая особенность объясняется необходимостью поддержки 48-разрядных MAC-адресов современных технологий стандарта 802.x: технологий локальных сетей (таких, как Ethernet), а также беспроводных технологий (таких, как Bluetooth и Wi-Fi) и 64-разрядных адресов, используемых FireWire. 64-разрядную адресацию будут использовать и новые технологии передачи данных по локальным и беспроводным сетям стандарта 802.x, которым еще только предстоит появиться на свет. Требование совместимости с 48-разрядными и 64-разрядными адресами MAC вытекает из другого требования, согласно которому должна существовать возможность вывода идентификатора интерфейса в индивидуальном адресе из MAC-адреса с помощью адреса расширенного уникального идентификатора Extended Unique Identifier (EUI) 64. Идентификатор интерфейса можно назначать вручную или с помощью сервера DHCP, оснащенного средствами для работы с протоколом IPv6.

Чаще всего идентификатор интерфейса выводится из 48-разрядного MAC-адреса адаптера Ethernet. 48-разрядный MAC-адрес расщепляется на две равные части, каждая по 24 разряда. По решению IEEE первые 24 разряда используются для идентификации изготовителей. Вторые 24 разряда изготовитель использует для того, чтобы уникальным образом идентифицировать адаптер. Хотя существует возможность изменения MAC-адреса адаптера Ethernet, мы будем исходить из того, что этот адрес изменен не был. Так вот, в процессе преобразования 48-разрядного MAC-адреса в 64-разрядный идентификатор интерфейса система прежде всего копирует 24 разряда MAC-адреса в первые 24 разряда идентификатора интерфейса. Значения битов 17 и 16 из первых 24 разрядов, представляющих изготовителя (считывание осуществляется справа налево начиная с 0), всегда составляют 00. В процессе копирования система устанавливает их равными 10. По завершении копирования этих 24 бит добавляются еще 16 байт, и эти байты всегда имеют значение 0xFFFE. Затем система копирует 24 разряда из второй половины MAC-адреса, и в результате получается 64-разрядный идентификатор интерфейса.

При установлении сетевых соединений по коммутируемым линиям идентификатор интерфейса можно генерировать с помощью процесса, обеспечивающего анонимность пользователя. Если бы такой возможности не было, можно было бы идентифицировать любую систему, вышедшую в Internet вне зависимости от провайдера Internet, поскольку в этом случае идентификатор интерфейса был бы уникальным для данного компьютера вне зависимости от поставщика сетевых услуг.

Групповые адреса

Система групповых адресов IPv6 аналогична системе, реализованной в версии IPv4. Узел, который намеревается прослушивать групповой трафик, устанавливает в качестве адреса IPv6 интерфейса тот самый групповой адрес, на который направляется этот трафик. Префикс формата групповых адресов — 0xFF. Следующие четыре разряда группового адреса отводятся под поле «Флаги». Младший бит в поле «Флаги» называется «Временный флаг» (Transient flag). Если его значение установлено равным 0, групповой адрес будет представлять собой хорошо известный адрес, установленный организацией IANA. Если же это значение установлено равным 1, мы имеем дело с непостоянным, или временным, групповым адресом. Следующие четыре разряда группового адреса отводятся для поля «Диапазон» (Scope). Назначение этого поля состоит в том, чтобы указывать диапазон группового трафика и определять трафик как внутрисистемный, локальный, сетевой, корпоративный или глобальный. Маршрутизаторы с помощью этого поля определяют, следует ли ретранслировать трафик. Последнее поле группового адреса — это идентификатор группы (Group ID); длина его составляет 112 бит. Идентификатор группы идентифицирует группу, которой адресуется пакет. Как и в случае с индивидуальными адресами, существуют заранее определенные групповые адреса. В таблице приводятся три наиболее распространенных из этих адресов.

Таблица. Общие, заранее определенные групповые адреса

При использовании групповых адресов версии IPv6 следует применять только 32 младших разряда поля группового идентификатора и обнулять 80 старших разрядов. Тем самым вы облегчите преобразование группового адреса в групповой адрес Ethernet. Групповой адрес Ethernet имеет форму 33:33:xx:xx:xx:xx. Если вы примените рекомендуемый формат групповой адресации, 32 младших разряда идентификатора группы и составят групповой адрес Ethernet.

В версии IPv6 групповые адреса используются и для поддержки разрешения адресов связи. Любой интерфейс добавляет групповой адрес к каждому из своих индивидуальных адресов. Групповой адрес принимает вид FF02::1:FFxx:xxxx. Система копирует последние 24 разряда индивидуального адреса в групповой адрес для замены строки xx:xxxx. Затем система сопоставляет групповой адрес IPv6 с групповым адресом MAC, как описано выше. Данная схема сокращает число узлов, которым приходится обрабатывать запросы на разрешение адресов. В версии IPv4, когда один узел хочет получить MAC-адрес интерфейса другого узла, система направляет на широковещательный MAC-адрес широковещательное сообщение. Таким образом, этот запрос приходится обрабатывать каждому интерфейсу связи — даже если запрос не предназначен для данного интерфейса. В версии IPv6 узел, желающий найти MAC-адрес интерфейса другого узла, направляет широковещательное сообщение по групповому адресу FF02::1:FF:xx:xxxx, где xx:xxxx — 24 младших разряда идентификатора интерфейса. Это в свою очередь транслируется в групповой MAC-адрес 33:33:FF:xx:xx:xx. Отвечать на данный запрос на разрешение адреса придется только интерфейсам связи с совпадающими младшими 24 разрядами идентификаторов интерфейсов.

Функциональные возможности IPv6

Шестую версию IP отличает не только расширенное адресное пространство. В ней используется новый формат заголовков, усовершенствованные средства поддержки расширений и параметров, средства маркировки потоков, а также функции аутентификации и защиты конфиденциальных данных.

Новый формат заголовков. Реализованный в версии IPv6 новый формат заголовков позволяет свести к минимуму непроизводительные затраты, часто возникающие в процессе обработки полей или данных в заголовках пакетов. Стандарт IPv4 предполагает необходимость подробного анализа пакетов маршрутизаторами и конечными системами с целью выявления информации, необходимой для определения того, следует ли подвергать пакет дальнейшей обработке. В версии IPv6 эти поля можно обнаружить после основного заголовка пакета в дополнительных заголовках, Extension Headers. Новый формат заголовков значительно облегчает процесс обработки заголовков маршрутизаторами, которые могут игнорировать информацию во всех дополнительных заголовках, за исключением дополнительного заголовка с подтверждением (Hop-by-Hop Extension Header), который должен следовать непосредственно за заголовком IPv6.

Дополнительный заголовок с подтверждением может содержать информацию, необходимую для маршрутизатора, например предупреждение о том, что тот или иной пакет относится к категории Jumbo packet (т. е. что его размеры превышают 65 535 байт), или о том, что в процессе обработки этого пакета маршрутизатор должен выполнить дополнительные операции.

Усовершенствованные средства для работы с расширениями и параметрами. Благодаря изменениям в формате заголовков IPv6, а также использованию дополнительных заголовков Extension Headers работа с этой новой функцией облегчается. К параметрам дополнительных заголовков применяется меньшее число ограничений, чем в версии IPv4; к тому же версия IPv6 может быть расширена за счет добавления через некоторое время новых заданных дополнительных заголовков. В версии Ipv6, если узел назначения получает пакет IPv6 с дополнительным заголовком, не распознаваемым этим узлом, последний с помощью шестой версии протокола Internet Control Message Protocol (ICMPv6) информирует исходный узел о том, что не может обработать данный пакет. Эта функция позволяет узлам реализовывать расширения IPv6 независимо друг от друга и тем не менее взаимодействовать друг с другом.

Функции маркировки потоков. Стандарт IPv6 предполагает маркировку потоков с целью обеспечения качества обслуживания (Quality of Service, QoS). С помощью маркировки пакетов исходный узел определяет приоритет (скажем, реальное время), который может быть использован средствами для передачи голоса по IP (Voice over IP, VoIP) или видео по IP для обеспечения гарантированной доставки пакета в течение определенного времени. В системах IPv4 для обеспечения качества обслуживания часто бывает необходимо, чтобы маршрутизатор или узел не ограничивался поиском информации в заголовке пакета. В версии IPv6 все нужные сведения содержатся в заголовке.

Аутентификация и конфиденциальная информация. В системах IPv6 средства аутентификации и защиты конфиденциальных данных сводятся главным образом к использованию протокола IPSec. В настоящее время этот протокол является необходимым компонентом реализаций IPv6, тогда как в сетях IPv4 он был факультативным компонентом. IPSec дает возможность использовать заголовки Authenticated Headers. Эти заголовки подтверждают права доступа различных узлов друг к другу, а также обеспечивают целостность данных, которыми обмениваются узлы. Кроме того, протокол IPSec позволяет применять инкапсуляцию с обеспечением безопасности полезной нагрузки, Encapsulating Security Payload (ESP). Упомянутая технология предоставляет аналогичные возможности, но наряду с этим позволяет шифровать данные для обеспечения конфиденциальности.

В отличие от версии IPv4, в которой различные реализации протокола разными поставщиками иногда приводят к тому, что узлы не могут взаимодействовать друг с другом, в версии IPv6 возможность совместной работы практически гарантируется благодаря лежащим в ее основе стандартам.

Следите за новостями

Мы находимся в самом начале пути. Теперь, получив представление об основах IPv6, вы можете заняться установкой и использованием протокола. Подготовьтесь к его запуску в средах Windows 2003 и Windows XP, а также к настройке интерфейсов с адресами и к активизации средств разрешения DNS.


Джон Хоуи (jhowie@microsoft.com ) — директор подразделения World Wide Services and IT Technical Community for Security компании Microsoft. Имеет более чем 15-летний опыт работы в области информационной безопасности и сертификаты CISSP, CISM и CISA

Любопытные факты 

  • Адресное пространство IPv6 дает возможность назначить каждой звезде в известной части Вселенной почти 7x1015 адресов.
  • Протокол IPv6 когда-то именовался IPng, т. е. протоколом Internet следующего поколения (Internet Protocol next generation).
  • Продукт, который идет на смену протоколу IPv4, не может именоваться IPv5, потому что еще в 70-е годы статус пятой версии этого протокола был закреплен за протоколом Internet Stream Protocol. Название IPv6 отражает то обстоятельство, что речь идет о шестой версии протокола.
  • В IPv4 под адреса выделяется 32 разряда, тогда как в IPv6 — 128 разрядов. IPv4 не в состоянии обеспечить адресом каждого жителя Земли, но при использовании версии IPv6 каждому землянину можно будет выделить почти 5x1028 адресов!