IP-адреса пользуются устойчивым спросом, но их явно недостаточно. Новая версия популярного протокола - IPv6 - позволит предоставить адреса всем желающим.
Представьте себе богатый пригород, где нет ничего, кроме свободных участков, незанятых домов, роскошных апартаментов в высотных зданиях. Теперь представьте себе плакат, оповещающий о том, что ввиду отсутствия новых междугородных телефонных кодов здешние обитатели не смогут пользоваться услугами телефонной связи и что из-за нехватки индексных цифр UPS, Federal Express и Почтовая служба США не будет доставлять им пакеты, письма и рекламу. Иными словами, поселиться здесь может любой, но на полноценное общение с внешним миром ему рассчитывать не придется.
Несмотря на неправдоподобность этого сценария, такая ситуация в отношении IP-адресов весьма вероятна уже в ближайшем будущем. Согласно некоторым статистическим расчетам, последний доступный IP-адрес будет занят где-то между 2005 и 2010 годами. Однако кризис нехватки IP-адресов может проявиться уже в 2000 году или примерно в это время, если бум на доступ в Internet, наблюдаемый в Северной Америке и Западной Европе, охватит Индию, Китай и другие перенаселенные страны. Проблема еще более осложнится, когда кабельные модемы станут реальностью. Короче говоря, все идет к тому, что проблема 2000 года - это не только проблема формата записи лет.
К счастью, IETF знает о быстром исчерпании доступных IP-адресов и намеревается решить эту и другие проблемы с текущей четвертой версией Internet Protocol (IPv4) с помощью межсетевого протокола следующего поколения (IPng), так же известного, как Internet Protocol version 6 (IPv6).
ФОРМА И СОДЕРЖАНИЕ
В конце 80-х отрасль осознала, что 32-разрядные адреса IPv4 рано или поздно потребуют замены, но только в начале 90-х дело наконец-то сдвинулось с мертвой точки. В июне 1992 года сообщество Internet встретилось в Кобе, Япония, и выдвинуло три предложения относительно нового IP. К декабрю того же года число предложений достигло семи, и Internet Engineering Steering Group (IESG), подкомитет IETF, организовал директорат, так и названный IPng Directorate, для рассмотрения новых предложений относительно IP и подготовки рекомендаций. "Рекомендации по протоколу IP следующего поколения", содержащиеся в RFC 1752, были опубликованы в январе 1995 года. Определенный IESG новый IP стал в конце концов упоминаться как IP версия 6 - номер 5 уже был занят параллельно разрабатываемым экспериментальным протоколом для передачи данных в реальном времени. Таким образом, IPng известен теперь как IPv6, а не как IPv5.
IPv6 решает потенциальную проблему нехватки IP-адресов посредством использования 128-разрядных адресов вместо 32-разрядных адресов IPv4, в результате адресное пространство расширяется в 296 раз. Результатом этого изменения будет то, что любое двуногое, четырехногое и насекомое на Земле может получить в свое распоряжение несколько IP-адресов. Помимо расширения числа IP-адресов члены IP Directorate упростили IP-заголовок и усовершенствовали некоторые возможности IPv4. Комитет ввел также несколько новых функций, таких как поле метки для идентификации пакетов, требующих специальной обработки; расширения заголовка для упрощения операций шифрования и идентификации; а также заголовок маршрутизации для увеличения производительности сети.
Одним из предполагаемых преимуществ IPv6 является увеличение производительности маршрутизаторов. В IPv4 маршруты от источника закодированы в дополнительном поле заголовка, и каждый маршрутизатор - вне зависимости от того, является он специальной точкой трансляции в маршруте от источника или нет - должен проверять содержимое этого поля заголовка. В случае с IPv6 содержимое заголовка маршрутизации просматривается, только если маршрутизатор обнаружит один из своих адресов в поле Destination Address основного заголовка IPv6. Метод работы IPv6 должен сократить число циклов ЦПУ маршрутизатора, благодаря чему скорость обработки пакетов при обычной загруженности сети будет выше.
ИСТОРИЯ ДВУХ ЗАГОЛОВКОВ
Лучший способ познакомиться с IPv6 состоит в изучении формата заголовка. Представление о заголовке IPv6 и возможности поддержки им ряда опций можно получить из сравнения его с заголовком и возможностями IPv4. Вверху на Рисунке 1 изображен базовый заголовок IPv6, состоящий из восьми полей; внизу - используемый в настоящее время заголовок IPv4, содержащий 14 полей. Как видим, число полей в IPv6 сократилось, если сравнивать с IPv4, на 8. Это может быть незаметно сразу, но три поля IPv4 были переименованы и усовершенствованы; кроме того, заголовок имеет два новых поля.
Рисунок 1.
Базовый заголовок IPv6 состоит из 8 полей, в то время как заголовок
IPv4 из 16. Три поля заголовка IPv6 имеют, в отличие от IPv4, несколько
иной смысл, а кроме того, у заголовка IPv6 есть два новых поля. Единственным
полем, сохранившим свое значение и местоположение, является поле версии.
Поле Total Length было переименовано в поле Payload Length. Эти два поля сходны между собой, но не тождественны, поскольку поле Payload Length содержит длину данных после заголовка, в то время как поле Total Length учитывает длину заголовка.
Единица измерения в поле Time to Live в IPv4 - секунды. Однако при прохождении пакета через маршрутизатор, ввиду трудности определения времени ожидания в очереди, значение этого поля уменьшается реально на 1 секунду. Признав эффективность использования числа транзитных маршрутизаторов в качестве способа определения срока жизни пакета, IPng Directorate заменил поле Time To Live на поле Hop Limit в IPv6.
Третье переименованное и измененное поле IPv4 - это поле Protocol. Оно превратилось в поле Next Header в IPv6. В IPv4 значение поля Protocol, например 6 для TCP или 17 для UDP, определяет, данные какого транспортного протокола следуют за IP-заголовком. В IPv6 поле Next Header позволяет вставлять дополнительные заголовки между данными IP и TCP или UDP; оно также сообщает тип транспортных данных, следующих за основным или дополнительным IP-заголовком. Кроме того, так как поле Next Header предоставляет информацию о наличии дополнительных заголовков, следующих за основным; данный механизм исключает необходимость в поле Header Length, или IHL.
Два поля, отсутствовавшие в IPv4, - это Priority (Prio) и Flow Label. Поле Prio длиной 4 бита позволяет хосту-отправителю задать приоритет для своих пакетов. Возможные 16 значений этого поля разделены на две категории: значения с 0 по 7 означают трафик, к которому при необходимости маршрутизаторы могут применять меры по контролю загруженности, а значения с 8 по 15 относятся к трафику, к которому эти меры не должны применяться. Последние представляют пакеты реального времени с видео-, аудио- и аналогичными данными, которые должны передаваться с постоянной скоростью.
Поле Flow Label длиной 24 бита идентифицирует пакеты, требующие специальной обработки и передаваемые от определенного отправителя к определенному получателю. О методе специальной обработки сообщает управляющий протокол, такой как RSVP, или данные внутри пакетов потока, например с помощью дополнительного заголовка описания транзитных узлов. Используя заголовки Prio и Flow Label, хосты могут идентифицировать пакеты, которые маршрутизаторы должны обрабатывать специальным образом; хосты могут также идентифицировать общий метод, посредством которого пакеты должны обрабатываться в зависимости от наличия других пакетов.
Поля Source Address и Destination Address сохраняют свое значение, но не свое положение в заголовке IPv6. Единственное поле, сохранившее как свое значение, так и свое положение в заголовке, - поле номера версии (Ver). Это поле длиной 4 бита имеет значение 4 (0100 в двоичном формате) для пакета IPv4 и значение 6 (0110 в двоичном формате) для пакета IPv6.
Несмотря на то что заголовок IPv6 не содержит каких-либо необязательных элементов, он предусматривает возможность помещения отдельных дополнительных заголовков между IP-заголовком и заголовком транспортного уровня. Например, идентификация и защита информации осуществляются с помощью дополнительных заголовков и включаются с помощью поля Next Header длиной 8 бит: оно определяет тип заголовка, следующего непосредственно за заголовком IPv6.
Каждый дополнительный заголовок содержит тип следующего за ним заголовка, благодаря чему вы можете создавать цепочку заголовков. В настоящее время спецификация IPv6 определяет шесть типов дополнительных заголовков. Ниже следует описание этих заголовков в том порядке, в каком их рекомендовано помещать друг за другом.
Опции описания транзитных узлов служат для передачи маршрутизаторам информации об управлении или отладке. Опции получателя несут информацию о тех или иных действиях, которые получатель должен выполнить. Опции маршрутизации содержат список промежуточных адресов, через которые пакет должен передаваться. Опции сведений о фрагментах предоставляют информацию, с помощью которой получатель может собрать фрагменты. Опции идентификации позволяют идентифицировать адреса отправителя и гарантировать тождественность содержимого пакета при передаче. Опция кодированной полезной нагрузки обеспечивает конфиденциальность данных. Рисунок 2 иллюстрирует последовательность заголовков в IPv6.
(1x1)
Рисунок 2.
Цепочка заголовков IPv6 служит для удовлетворения конкретных требований
передачи. Верхний пакет не содержит дополнительных заголовков: поле Next
Header указывает, что далее следует заголовок TCP. В среднем пакете поле
Next Header указывает, что далее следует дополнительный заголовок маршрутизации,
а уж его соответствующее поле сообщает о том, что за ним следует заголовок
TCP. В третьем пакете поле Next Header в заголовке маршрутизации указывает,
что за ним следует заголовок идентификации.
АДРЕСАЦИЯ IPV6
Как упоминалось выше, адреса IPv6 имеют длину 128 бит. По словам Кристиана Гуитема, прежнего председателя совета по архитектуре Internet, такое количество адресов позволит подключить к сети свыше 1 квадрильона компьютеров в 1 триллионе сетей, т. е. практически любое устройство - от холодильников, микроволновых печей и кофеварок до электростимуляторов, сотовых телефонов и... кто знает, что придумают в будущем.
Адреса IPv6 можно разделить на три типа: обычные (unicast), групповые (multicast) и нечеткие (anycast). Обычный адрес идентифицирует один интерфейс; групповой - группу интерфейсов. Пакет с обычным адресом передается конкретному адресату, в то время как пакет с групповым адресом доставляется всем членам группы. Аналогично групповому адресу третий тип адресов IPv6 идентифицирует набор интерфейсов. Однако пакет с нечетким адресом доставляется только на один интерфейс - ближайшему члену данной группы.
Одно из применений таких адресов состоит, например, в указании хосту в качестве адреса шлюза нечеткого адреса. При этом хосту не надо знать конкретный адрес маршрутизатора, потому что последний является членом группы маршрутизаторов с таким адресом. Кроме того, изменять данный адрес в случае изменения местоположения маршрутизатора не надо. Это становится возможным благодаря тому, что пакеты по-прежнему отправляются ближайшему члену нечеткой группы. Использование такого рода адресов в IPv6 сводит к минимуму некоторые свойственные IPv4 проблемы реконфигурации при реструктурировании сети.
Адреса IPv4 разделяются на классы в соответствии со значениями нескольких первых бит адреса. IPv6 распределяет адресное пространство аналогичным образом; этот метод реализуется с помощью поля переменной длины, обозначаемого термином "Format Prefix". Таблица 1 описывает исходное распределение адресного пространства IPv6, в том числе назначение блока адресов, его двоичный префикс и его долю от всего адресного пространства.
ТАБЛИЦА 1 - ИСХОДНОЕ РАСПРЕДЕЛЕНИЕ АДРЕСОВ IPV6
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Только мы привыкли к точечно-десятичной нотации адресов IPv4, как тут появляется IPv6 со 128-разрядными адресами. В IPv6 128-разрядные адреса записываются в виде восьми 16-разрядных целых чисел, разделенных двоеточием. Каждое целое число представлено четырьмя шестнадцатеричными цифрами; иными словами, вы будете вынуждены ввести 32 шестнадцатеричных цифры для задания IP-адреса - весьма утомительное занятие. Ваши пальцы должны быть достаточно натренированы, чтобы ввести адрес станции, а также шлюза и сервера DNS. К счастью, IPv6 разрешает опустить начальные нули в шестнадцатеричных числах, а также использовать пару двоеточий (::) внутри адреса для замены последовательности нулевых чисел. На начальной стадии развертывания IPv6 скорее всего только часть из 128 бит найдет реальное применение, поэтому адреса будут содержать множество нулей. Таким образом, пропуск начальных нулей и использование только пары двоеточий вместо последовательности нулевых чисел должно упростить процесс конфигурации IP. Например, IPv4-совместимые адреса IPv6 будут состоять из 32-разрядных адресов IPv4, записанных в младших 32 разрядах адресного пространства IPv6. Иначе говоря, префикс такого адреса будет состоять из 96 нулей.
В качестве иллюстрации мы рассмотрим следующий 128-разрядный адрес: 504A:0000: 0000:0000:00FC: ABCD: 3A1F:4D3A. Так как IPv6 позволяет пропустить начальные нули в каждом блоке из 4 шестнадцатеричных цифр в адресе, данный адрес можно записать в сокращенном виде следующим образом: 504A:0:0:0:FC:ABCD:3A1F:4D3A. Однако, если воспользоваться принятым соглашением об исключении последовательных блоков нулей, адрес можно записать еще короче 504A::FC: ABCD:3A1F:4D3A. Теперь адрес состоит всего из пяти шестнадцатеричных чисел вместо восьми. Таким образом, пара двоеточий представляет 3 целых числа, значение которых равно нулю.
Теперь, когда мы в общих чертах познакомились с типами адресов IPv6 и их нотацией, давайте рассмотрим некоторые из них несколько подробней. На Рисунке 3 представлен обычный адрес по принадлежности к провайдеру. Этот адрес принадлежит к первой группе зарезервированных адресов IPv6. Как видно из Таблицы 1, данный адрес имеет в качестве префикса последовательность битов 010.
(1x1)
Рисунок 3.
Обычные адреса по принадлежности к провайдеру будут, по всей видимости,
раздаваться раньше остальных.
Поле Registry ID идентифицирует ответственную за присвоение адреса регистратуру Internet, например InterNIC в Северной Америке, RIPE в Европе или APNIC в Азии. Поле Provider ID длиной 16 бит идентифицирует оператора Internet. Следующее поле длиной 8 бит является резервным. 24-разрядное поле Subscriber ID, ответственность за назначение которого несет оператор, идентифицирует конкретного пользователя. Как и за полем Provider ID, за ним следует резервное поле длиной восемь бит. Изначально значение этого поля равно нулю, в принципе оно может использоваться в качестве расширения поля Subscriber ID. Оставшиеся 64 разряда в адресе по принадлежности к провайдеру идентифицируют сеть и хост во многом тем же образом, что и адреса IPv4 с класса A по класс С. Поскольку поле Provider ID идентифицирует оператора Internet, администратор сети, являющийся клиентом оператора, может использовать поле Intrasubscriber для разбиения выделенного блока адресов на поле Subnet и поле Station. Поле Subnet идентифицирует различные подсети в организации, а поле Station ID идентифицирует станции в каждой сети.
Такая структура адреса по принадлежности к провайдеру значительно упрощает маршрутизацию. Например, посредством анализа поля Provider ID маршрутизатор может определить, что он должен передать пакет в сеть другого провайдера. Если пакет предназначен для получателя внутри сети провайдера, маршрутизатор смотрит поле Subscriber ID для определения того, в какое место сети пакет должен быть передан. Что касается абонента, 64-разрядное поле Intrasubscriber предоставляет достаточное для структурирования его внутренней сети адресное пространство. На самом деле, как и в случае IPv4, организации имеют полное право по своему усмотрению структурировать адресное пространство поля Intrasubscriber на подсети и хосты. При необходимости организация может добавить один или более уровней иерархии. Например, государственная организация со многими сетями в нескольких штатах может реализовать иерархию в соответствии с делением на штаты, сети и хосты.
АДРЕСАЦИЯ В ЧАСТНЫХ СЕТЯХ
Один из наиболее интересных аспектов IPv6 состоит в том, что, вообще говоря, частные сети смогут подключиться к Internet без массовых изменений в конфигурации, как это имело место в случае IPv4. Например, в RFC 1918 IETF резервирует три блока адресов для сетей, еще не подключенных к Internet. Намерения, выраженные в этом документе, заслуживают уважения, но, когда организация решает, что пришло время подключиться к Internet, она должна получить необходимый блок адресов и затем переконфигурировать IP-адреса каждого устройства в сети.
IPv6 справляется с проблемой переопределения адресов куда более изящным образом благодаря тому, что он позволяет присваивать локальные адреса для линии и узла (Link-Local и Site-Local). В данном случае термин "линия" относится к такому средству связи, как сеть frame relay или ATM, прямой выделенной линии или соединению с сетью Ethernet, Token Ring или FDDI. Таким образом, локальный адрес для линии представляет изолированное устройство и средство связи, не имеющее соединения с маршрутизатором и не подсоединенное к Internet. Такой адрес позволяет подключить сеть или устройство к Internet без присвоения ему нового адреса. Эта возможность показана в верхней части Рисунка 4, где представлен общий формат локального адреса для линии.В данном примере поле уникального адреса является MAC-адресом локальной сети. Префикс имеет длину 10 бит, так что оставшаяся часть состоит из 118 бит. Если локальный адрес для линии используется для подключения сети Ethernet, то MAC-адрес займет 48 бит. В результате локальный адрес для линии будет иметь 80-разрядный префикс FE80::, за которым следует 48-разрядный MAC-адрес в сети Ethernet. Таким образом, использование локальных адресов для линии позволяет подключать сети Ethernet, Token Ring и FDDI к Internet без реконфигурации сетевых адресов.
(1x1)
Рисунок 4.
Локальные для линии и локальные для узла адреса упрощают подключение
частных сетей к Internet. Первые позволяют подключать сеть или устройство
к Internet без переконфигурации адреса; вторые даются узлам, имеющим маршрутизаторы,
но не имеющим соединения с оператором Internet.
Внизу на Рисунке 4 изображен формат локального адреса для узла. Адреса этого типа присваиваются узлам, имеющим маршрутизаторы, но не подключенным к Internet через оператора. При подключении узла к Internet маршрутизатор конфигурируется с новым префиксом. В сущности он генерирует адрес по принадлежности к провайдеру посредством включения полей Registry ID, Provider ID и Subscriber ID. Так как IPv6 не предполагает изменения какой-либо части прежнего адреса, подключение узла к Internet проходит легче, чем в случае IPv4.
ВЕЛИКОЕ ПЕРЕСЕЛЕНИЕ
Переход от IPv4 к IPv6 займет не один год. Если вы довольны имеющимся в вашем распоряжении блоком IP-адресов и предпочитаете статус кво, то вам не о чем беспокоиться: скорее всего вы сможете использовать IPv4 в продолжении ближайших тысячелетий - по крайней мере до тех пор, пока IPv6-совместимые продукты не вытеснят устаревшее оборудование или вы сами не примете решение о миграции.
Если вы решили мигрировать к IPv6, то сделать это можно двумя способами: с помощью двойных стеков или туннелирования. И тот и другой метод обратно совместим с IPv4. Двойные стеки позволяют каждому узлу IP поддерживать как IPv6, так и IPv4. Подобные узлы называются IPv6/IPv4-узлами; они могут отправлять и принимать как пакеты IPv4, так и пакеты IPv6. Каждый интерфейс IPv6/IPv4-узла получает как
32-разрядный адрес для поддержки функций IPv4, так и 128-разрядный адрес для поддержки функций IPv6. На Рисунке 5 в качестве примера изображен узел с двойным стеком IPv4 и IPv6.
(1x1)
Рисунок 5.
Благодаря использованию двойного стека узел IPv6/IPv4 сможет взаимодействовать
с узлами как IPv4, так и IPv6.
Использование двойного стека позволяет переводить на IPv6 каждый хост сети по отдельности, а использование его на маршрутизаторе - подключить сеть вашей организации к оператору Internet, переходящему на IPv6. Кроме того, последнее решение позволяет постепенно перевести хосты в сети на IPv6 посредством установки на них двойных стеков.
Во время перехода вам, скорее всего, придется изменить конфигурационную информацию, обновить список контроля доступа и изменить DNS для поддержки более длинных адресов. Несмотря на возможность использования RIP и других протоколов маршрутизации IPv4, вам, вероятно, потребуется дополнительная оперативная память для обновленного программного обеспечения, поскольку таблицы маршрутизации IPv6 больше по объему. Если вы собираетесь реализовывать двойной стек на хостах, то должны посмотреть, как используется имеющаяся память и как установка двойного стека повлияет на имеющиеся приложения.
Второй метод перехода к IPv6 - туннелирование. IPv6 не является обратно совместимым с IPv4, а IPv4-совместимые устройства не могут непосредственно работать с пакетами IPv6. Ввиду этого передача пакетов IPv6 через инфраструктуру IPv4 невозможна без туннелирования, т. е., по сути, помещения пакетов IPv6 в пакеты IPv4. Internet и практически все частные сети IP базируются на инфраструктуре IPv4, таким образом туннелирование позволит хостам и узлам IPv6 общаться друг с другом через "устаревшие" сети IP.
RFC 1933 определяет четыре конфигурации туннелей между хостами и маршрутизаторами: между маршрутизаторами, между хостом и маршрутизатором, между хостами и между маршрутизатором и хостом. Туннель между маршрутизаторами позволяет маршрутизаторам IPv6/IPv4, связанным с помощью сети IPv4, передавать друг другу пакеты IPv6. Если вы модернизировали узел в сети с IPv4 до IPv6, то связь хоста с маршрутизатором осуществляется с помощью туннеля между хостом и маршрутизатором; хост IPv6/IPv4 туннелирует пакеты маршрутизатору IPv6/IPv4. Туннель между хостами нужен тогда, когда двум хостам IPv6/IPv4 в одной сети IPv4 необходимо общаться друг с другом. Четвертая конфигурация туннеля между маршрутизатором и хостом применяется, если маршрутизатору IPv6/IPv4 надо передать данные хосту IPv6/IPv4 через сеть IPv4. В этом случае маршрутизатор инкапсулирует пакеты IPv6 в пакеты IPv4 и отправляет их хосту IPv6/IPv4.
Несмотря на то что туннелирование позволяет IPv6 и IPv4 сосуществовать в рамках одной инфраструктуры IPv4, наличие дополнительного заголовка ведет к росту сетевого трафика и может оказаться той соломинкой, что переломит хребет тяжело загруженному сетевому соединению. Таким образом, определение необходимости увеличения пропускной способности соединения глобальной сети с введением туннелирования потребует проведения мониторинга трафика и некоторых простых расчетов.
КУДА НАПРАВИТЬ СВОИ СТОПЫ?
IPv6 - уже не такое далекое будущее. Всегда находятся те, кто на своей шкуре вызывается опробовать новую технологию, однако необходимо помнить, что вы вряд ли что-нибудь сможете сделать, пока не появится программное обеспечение для IPv6. Во время подготовки данной статьи около дюжины поставщиков заявили о поддержке IPv6 в своих операционных системах Unix. В то же время несколько производителей сетевого оборудования объявили о планах выпуска программного обеспечения маршрутизации IPv6 к концу 1997 года. Ввиду того, что операторы Internet пока не планируют реализацию IPv6, администраторы сетей смогут разве только поэкспериментировать с IPv6. Однородные сети будут иметь, скорее всего, некоторое преимущество над разнородными, потому что выпуск программного обеспечения IPv6, по всей видимости, станет не одномоментным событием, а поэтапным процессом. К счастью, адресов IPv4 хватит еще на несколько лет, так что у нас пока есть время для более близкого знакомства с двойными стеками, туннелями и другими аспектами следующего поколения IP.
Гилберт Хелд - лектор и публицист, получивший несколько наград за свои произведения. С ним можно связаться по адресу: 235-8068@mcimail.com.