Строительство будущего
Двойной подход
Туннель в новую землю
Стратегии перехода

Контрольный список

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


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

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

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

Еще одна, причем куда более серьезная, проблема - сеть Internet, охватывающая 24 временные зоны. Разом обновить эту систему будет значительно труднее, если вообще возможно.

Разработчики IPv6 осознают указанные проблемы и подтверждают, что не все смогут в ближайшем будущем совершить переход от IPv4 к IPv6; возможно, некоторые не осуществят его в течение еще ряда лет или вообще никогда. Имеет это в виду и рабочая группа Internet Engineering Task Force (IETF), которая определила тактику перехода в нескольких документах, детально описав средства и методы, призванные сделать такой переход минимально болезненным.

Строительство будущего

Окончательный переход к следующему поколению IP планировался и был задокументирован уже на начальных стадиях разработки IPv6. Документ RFC 1752 - The Recommendation for IP Next Generation Protocol - определял четыре базовых требования к протоколу, которые должны гарантировать гладкий процесс перехода.

  • Постепенное расширение. Существующие IPv4-хосты могут расширяться до поддержки IPv6 независимо от расширения других хостов и маршрутизаторов.
  • Постепенное развертывание. Новые хосты и маршрутизаторы IPv6 могут инсталлироваться в любой момент, без каких-либо предусловий.
  • Простая адресация. Когда хосты и маршрутизаторы IPv4 расширяются до поддержки протокола IPv6, они могут продолжать использовать свои адреса. Им не нужно присваивать новые адреса.
  • Низкие стартовые цены. Расширение существующей IPv4-системы до поддержки IPv6 или развертывание новой IPv6-системы требует небольшой подготовительной работы или вообще не требует.
  • Здесь ключевыми словами являются "существующий" и "постепенный". Возьмите то, что у вас есть в настоящий момент, и выполните расширение до новой версии как диктует логика.

    При этом определение предпосылки - одно, а проектирование решения - совсем другое. Логические и технические проблемы перехода рассматриваются в документе RFC 1933 - Transition Mechanisms for IPv6 Hosts and Routers. Он описывает функциональные средства, которые будут использоваться для безболезненного перехода к новой версии. Предлагаются два метода: узлы с поддержкой обоих протоколов (так называемый метод двойных стеков) и туннелирование IPv6-пакетов по существующим сетям IPv4.

    Двойной подход

    Обратимся сначала к методу двойного стека, при описании которого используется несколько новых терминов. Простейшим механизмом, позволяющим сосуществовать IPv4 и Ipv6, является реализация обоих стеков протоколов на одном и том же устройстве. Такое устройство (оно может быть либо хостом, либо маршрутизатором) дальше обозначается как узел IPv4/IPv6. Подобный узел может отправлять и получать пакеты обоих протоколов (IPv4 и Ipv6), а следовательно, взаимодействовать с узлами любого типа в их "родном" формате.

    Узел IPv4/IPv6 будет конфигурироваться с помощью адресов, поддерживающих оба протокола: это 32-разрядные адреса для функций IPv4 и 128-разрядные - для функций IPv6. Для других функций, таких как Dynamic Host Configuration Protocol, BOOTP Protocol и Domain Naming System (DNS), с помощью которых реализуются преобразование, конфигурирование и распределение адресов, также могут потребоваться изменения. Естественно, любой протокол, поддерживающий IPv6-часть этого уравнения, например DNS, должен быть расширен до возможностей обработки больших по размеру адресов IPv6. Текущие документы IETF описывают необходимые модификации протокола.

    Туннель в новую землю

    Второй механизм перехода, туннелирование (tunneling), представляет собой процесс, в котором пакет одного типа (в данном случае IPv6) инкапсулируется в пакет, используемый другим протоколом (в данном случае IPv4). Это позволяет передавать первоначальный пакет по другому типу сети; в нашем примере инфраструктура IPv4 получает возможность переносить пакеты IPv6. Такой механизм особенно важен, поскольку большинство существующих TCP/IP-систем межсетевого взаимодействия - в том числе Internet - имеют в своей основе инфраструктуру IPv4.

    Процесс туннелирования включает в себя три шага: инкапсуляцию, декапсуляцию и управление туннелем. В узле инкапсуляции, или входной точке туннеля, пакет IPv6 размещается в поле данных пакета IPv4. Полученный в результате пакет IPv4 содержит и заголовок IPv4, и заголовок IPv6 плюс всю информацию верхних уровней, такую как заголовок ТСР, прикладные данные и т.д. Что касается управления, то узел инкапсуляции может поддерживать информацию о конфигурации, относящуюся к устанавливаемому туннелю или (туннелям), например определять самую большую порцию данных - так называемую максимальную единицу передачи (maximum transfer unit - MTU), которую можно посылать по данному туннелю. Заголовок IPv4 считывают промежуточные маршрутизаторы, перебрасывающие пакет по сети IPv4 к узлу декапсуляции, или конечной точке туннеля. Здесь заголовок IPv4 проверяется и затем отбрасывается; остается заголовок IPv6 плюс данные, которые затем доставляются хосту назначения IPv6.

    Однако вспомним, что туннелирование - это процесс, который становится частью архитектуры сети. Для того чтобы реализовать туннель, необходимо знать его возможные конфигурации и представлять, где в системе межсетевого взаимодействия они с наибольшей вероятностью могут быть реализованы. RFC 1933 определяет четыре возможные конфигурации туннелей, которые могут устанавливаться между маршрутизаторами и хостами.

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

    Для этого используется один из двух методов: конфигурируемое или автоматическое туннелирование. При конфигурируемом туннелировании сетевой администратор вовлекается в определение конфигурации конечной точки, при автоматическом процессу конфигурации помогают механизмы протокола IPv6. Рассмотрим каждую из этих возможностей отдельно.

    Конфигурируемое туннелирование

    Это туннелирование IPv6 по IPv4, при котором адрес конечной точки туннеля IPv4 определяется конфигурационной информацией в узле инкапсуляции. В двух из описанных выше сценариев туннелирования (в случаях маршрутизатор-маршрутизатор и хост-маршрутизатор) конечной точкой туннеля является маршрутизатор. Маршрутизатор выполняет декапсуляцию пакета IPv6 и передает его в конечный пункт назначения сети IPv6.

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

    Автоматическое туннелирование

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

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

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

    Напомним, что связь хост-маршрутизатор использует конфигурируемое туннелирование, в то время как связь маршрутизатор-хост - автоматическое туннелирование. Существует гибридный метод, часто называемый полуавтоматическим или полуручным туннелированием, в котором эти подходы комбинируются для обеспечения связи в обоих направлениях: конфигурируемое туннелирование используется в направлении от хоста к маршрутизатору, а автоматическое - от маршрутизатора к хосту. Тип конечной точки определяет тип конфигурации туннеля (конечные точки на хостах могут применять автоматическое туннелирование, а конечные точки на маршрутизаторах - конфигурируемое); комбинация двух методов позволяет максимально полно использовать возможности нового протокола.

    Стратегии перехода

    Механизмы перехода показывают, как может происходить расширение до поддержки новой версии, но не отвечают на стратегический вопрос: что нужно делать в первую очередь? Кроме того, необходимой частью процесса перехода являются и другие вспомогательные функции (см. врезку "Контрольный список"). Например, DNS-серверы выполняют преобразование имени хоста, которое понимает человек, в IP-адрес, который понимают хосты и маршрутизаторы (и обратно). Записи в современных серверах именования доменов хранят 32-разрядные адреса IPv4; следовательно, их необходимо расширить таким образом, чтобы они могли поддерживать 128-разрядные адреса IPv6. Протоколы маршрутизации, такие как Routing Information Protocol (RIP) и Open Shortest Path First (OSPF), также должны расширяться до возможности обработки новых структур адресов. К счастью, все эти проблемы решены IETF, и поставщики сейчас пересматривают свои коды для работы с новыми форматами.

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

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

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

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

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

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

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

    Тем не менее самый лучший совет - построить небольшую испытательную сеть, протестировать ее с модификациями IPv6 от всех поставщиков, а также выполнить тест с использованием 6bone - спонсируемой IETF глобальной тестовой сети, которая охватывает Северную Америку, Европу и Японию. И - наберитесь терпения. Помните, что Рим был построен не за один день, и Internet не сможет перейти к новой версии IP без определенных реальных усилий.


    Марк Миллер (Mark Miller) - президент компании DigiNet, занимающейся инжинирингом информационных коммуникаций, автор 11 книг по проектированию и анализу систем межсетевого взаимодействия. С ним можно связаться через Internet по адресу Mark@diginet.com.

    Контрольный список

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

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

  • Определить топологию своей тестовой сети IPv6, включая хосты, рабочие станции и маршрутизаторы, которые будут тестироваться.
  • Связаться с поставщиками, чтобы узнать, насколько доступно модифицированное программное обеспечение IPv6 для хостов, рабочих станций и маршрутизаторов, например новые версии операционных систем и модифицированных протоколов маршрутизации, таких как Routing Information Protocol и Open Shortest Path First.
  • Модифицировать сервер DNS для поддержки записей адресов IPv6, как определено в RFC 1886.
  • Определить тестовый адрес IPv6 для своего туннеля, как определено в RFC 1897.
  • Сконфигурировать туннель в 6bone с помощью руководств, которые можно получить на домашней странице сети 6bone или используя ее список рассылки.
  • Поэкспериментировать с новым протоколом, прежде чем превращать систему в рабочую среду.
  • Специальный адрес для автоматического туннелирования

    В сценариях туннелирования хост-хост и маршрутизатор-хост конечная точка туннеля и конечный пункт назначения пакета IPv6 совпадают - это хост. Однако адрес конечной точки туннеля - адрес IPv4, в то время как адрес хоста - это адрес IPv6. Совместимый с IPv4 адрес IPv6, который используется при автоматическом туннелировании, упрощает дело. Адрес IPv4 занимает младшие 32 бита адреса IPv6, а его остаток заполняется нулями, что указывает на специальное назначение этого адреса. Таким образом, один адрес несет двойную нагрузку: определяет конечную точку туннеля (Ipv4 - часть адреса) и хост (полный адрес IPv6).

    128 бит
    000....000...000
    Адрес IPv4
    96 бит
    32 бита