КабельщикПротокол DHCPv6

Джозеф Дэвис (Joseph Davies)

Протокол DHCP (Dynamic Host Configuration Protocol — протокол динамической настройки хостов) предназначен для назначения компьютерам IP-адресов и других сетевых данных, которые обеспечивают возможность их автоматического взаимодействия в сети. По сути, в сети IPv6 настройку адресов можно проводить и без DHCP, однако наличие этого протокола предоставляет ряд преимуществ. Протокол DHCP для протокола IPv6 (DHCPv6) может

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

автоматическая настройка адресов без сохранения состояния применяется для настройки локальных адресов канала и нелокальных адресов путем обмена сообщениями Router Solicitation (обращение к маршрутизатору) и Router Advertisement (объявление маршрутизатора) с соседними маршрутизаторами;

автоматическая настройка адресов с сохранением состояния применяется для настройки нелокальных адресов с помощью протокола настройки, например DHCP.

Настройку адресов без сохранения состояния узел IPv6 выполняет автоматически. При этом он задействует протокол настройки (например DHCPv6), основываясь на следующих флагах из сообщения Router Advertisement (объявление маршрутизатора), полученного от соседнего маршрутизатора:

флаг управляемой настройки адресов (флаг M). Если данный флаг имеет значение 1, это указывает на то, что узел должен получить адреса с сохранением состояния посредством протокола настройки;

флаг других параметров настройки с сохранением состояния (флаг O). Если данный флаг имеет значение 1, это указывает на то, что узел должен обратиться к услугам протокола настройки для получения других параметров.

Ниже приводятся возможные варианты сочетания флагов M и O:

флаги M и O имеют значение 0. Это сочетание соответствует сети без инфраструктуры DHCPv6. При настройке нелокальных адресов хосты основываются на объявлениях маршрутизатора; остальные параметры настраиваются другими методами (например вручную);

флаги M и O имеют значение 1. Адреса и другие параметры настраиваются при помощи протокола DHCPv6. Это сочетание называется «DHCPv6 с сохранением состояния»; при этом протокол DHCPv6 назначает узлам IPv6 адреса с сохранением состояния;

флаг M имеет значение 0, а флаг O — значение 1. Протокол DHCPv6 не участвует в назначении адресов, но применяется для присвоения других параметров настройки. Соседние маршрутизаторы объявляют префиксы нелокальных адресов, на основании которых узлы IPv6 формируют адреса без сохранения состояния. Это сочетание называется «DHCPv6 без сохранения состояния». Протокол DHCPv6 распределяет между узлами IPv6 не адреса с сохранением состояния, а параметры настройки без сохранения состояния;

флаг M имеет значение 1, а флаг O — значение 0. В этом сочетании протокол DHCPv6 задействуется для настройки адресов, но не участвует в определении других параметров. Так как необходимость в настройке других параметров (например IPv6-адресов DNS-серверов) на узлах IPv6 возникает в большинстве случаев, подобное сочетание встречается редко.

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

Сообщения протокола DHCPv6

Как и протокол DHCP для IPv4, протокол DHCPv6 использует сообщения протокола UDP (User Datagram Protocol — протокол пользовательских датаграмм). Клиенты DHCPv6 прослушивают на предмет сообщений DHCP порт 546 протокола UDP. Серверы и агенты ретрансляции DHCPv6 прослушивают в ожидании сообщений DHCPv6 порт 547 протокола UDP. По структуре сообщения DHCPv6 значительно проще своих аналогов протокола DHCP для IPv4, который в целях обеспечения поддержки бездисковых рабочих станций был основан на протоколе BOOTP. Структура сообщений протокола DHCPv6, которыми обмениваются клиент и сервер, показана на рис. 1.

Figure 1 DHCPv6 messages between client and server

Figure 1** DHCPv6 messages between client and server **(Щелкните изображение, чтобы увеличить его)

В поле Msg-Type размером 1 байт указывается тип сообщения DHCPv6. Поле Transaction-ID (3 байта), определяется клиентом и предназначено для группировки сообщений протокола DHCPv6, которыми обмениваются стороны. После поля Transaction-ID следуют параметры протокола DHCPv6, содержащие идентификационные данные клиента и сервера, адреса и другие настройки. Перечень стандартных параметров DHCPv6 содержится в документе RFC 3315, ссылка на который приведена на боковой панели «Ресурсы RFC, касающиеся протокола DHCPv6».

Параметры протокола DHCPv6 имеют формат TLV (type-length-value — тип-длина-значение). Структура параметров DHCPv6 показана на рис. 2.

Поле Option-Code (2 байта) предназначено для идентификации параметра. В поле Option-Len (2 байта) указывается длина поля Option-Data в байтах. Поле Option-Data содержит данные параметра.

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

Figure 2 Structure of DHCPv6 options

Figure 2** Structure of DHCPv6 options **(Щелкните изображение, чтобы увеличить его)

В поле Hop-Count (1 байт) указывается число агентов ретрансляции, получивших данное сообщение. Если число прыжков, указанное в сообщении, превышает максимально допустимую величину, принимающий агент ретрансляции может отказаться от него. В поле Link-Address (16 байт) содержится нелокальный адрес, назначаемый интерфейсу, подключенному к подсети клиента. Значение поля Link-Address позволяет серверу правильно определить область, из которой следует назначить адрес. Поле Peer-Address (16 байт) содержит IPv6-адрес клиента, являющегося исходным отправителем сообщения, или предыдущего агента ретрансляции. За полем Peer-Address следуют параметры протокола DHCPv6, в том числе параметр Relay Message, содержащий ретранслируемое сообщение, и другие. Параметр Relay Message обеспечивает инкапсуляцию сообщений, которыми обмениваются клиент и сервер.

В протоколе IPv6 не предусмотрены широковещательные адреса. По этой причине ограниченный широковещательный адрес, применявшийся при передаче некоторых сообщений протокола DHCPv4, в DHCPv6 заменен адресом All_DHCP_Relay_Agents_and_Servers (все агенты ретрансляции и серверы протокола DHCP), имеющим значение FF02::1:2. К примеру, клиент DHCPv6, пытающийся определить местонахождение сервера DHCPv6 в сети, должен отправить со своего локального адреса канала по адресу FF02::1:2 сообщение Solicit (обращение). Если в подсети узла есть сервер DHCPv6, он получает это сообщение и отправляет соответствующий ответ. Впрочем, как правило, сообщение Solicit (обращение) получает агент ретрансляции протокола DHCPv6, находящийся в подсети узла, после чего оно передается на сервер DHCPv6.

Figure 3 Structure of messages between relay and server

Figure 3** Structure of messages between relay and server **(Щелкните изображение, чтобы увеличить его)

Обмен сообщениями с сохранением состояния

Обмен сообщениями протокола DHCPv6 с сохранением состояния, предназначенный для получения IPv6-адресов и параметров настройки (когда флаги M и O в полученном объявлении маршрутизатора имеют значение 1), обычно выглядит следующим образом:

  • для обнаружения серверов клиент отправляет сообщение Solicit (обращение);
  • сервер отправляет сообщение Advertise (объявление), подтверждая этим возможность предоставления адресов и параметров настройки;
  • клиент запрашивает адреса и параметры настройки у конкретного сервера путем отправки сообщения Request (запрос);
  • сервер в ответ отправляет сообщение Reply (ответ) с запрошенными адресами и параметрами настройки.

Если в качестве посредника между клиентом и сервером выступает агент ретрансляции, он передает серверу сообщения Relay-Forward (ретрансляция-пересылка) с инкапсулированными сообщениями Solicit (обращение) и Request (запрос), поступающими от клиента. Сервер передает агенту ретрансляции сообщения Relay-Reply (ретрансляция-ответ) с инкапсулированными сообщениями Advertise (объявление) и Reply (ответ), предназначенными для клиента. Полный перечень сообщений протокола DHCPv6 см. на рис. 4.

Figure 4 Сообщения протокола DHCPv6

Сообщение DHCPv6 Описание Эквивалент в DHCP для IPv4
Solicit (обращение) Отравляется клиентом локальным серверам. DHCPDiscover
Advertise (объявление) Отправляется сервером в ответ на сообщение Solicit (обращение) в качестве свидетельства доступности. DHCPOffer
Request (запрос) Отправляется клиентом с целью запросить у конкретного сервера адреса или параметры настройки. DHCPRequest
Confirm (подтверждение) Отправляется клиентом всем серверам с целью проверки соответствия конфигурации клиента требованиям установленного канала связи. DHCPRequest
Renew (обновление) Отравляется клиентом определенному серверу для продления срока аренды выделенных адресов и получения обновленных параметров настройки. DHCPRequest
Rebind (повторная привязка) Отправляется клиентом любому серверу, если ответ на ранее отправленное сообщение Renew (обновление) не получен. DHCPRequest
Reply (ответ) Отправляется сервером конкретному клиенту в ответ на сообщения Solicit (обращение), Request (запрос), Renew (обновление), Rebind (повторная привязка), Information-Request (запрос данных), Confirm (подтверждение), Release (освобождение) и Decline (отклонение). DHCPAck
Release (освобождение) Отправляется клиентом в связи с отказом от применения ранее назначенного адреса. DHCPRelease
Decline (отклонение) Отправляется клиентом конкретному серверу в качестве оповещения о том, что выделенный адрес уже используется. DHCPDecline
Reconfigure (перенастройка) Отправляется сервером клиенту в качестве оповещения о том, что на сервере появились новые или обновленные параметры настройки. После этого клиент отправляет одно из двух сообщений: Renew (обновление) или Information-Request (запрос данных).
Information-Request (запрос данных) Отправляется клиентом для запроса параметров настройки (без адреса). DHCPInform
Relay-Forward (ретрансляция-пересылка) Отправляется агентом ретрансляции с целью пересылки клиентского сообщения серверу. Внутри сообщения Relay-Forward (ретрансляция-пересылка) в качестве параметра Relay-Message протокола DHCPv6 размещается инкапсулированное сообщение клиента.
Relay-Reply (ретрансляция-ответ) Отправляется сервером для передачи клиенту сообщения через агента ретрансляции. Внутри сообщения Relay-Reply (ретрансляция-ответ) в качестве параметра Relay-Message протокола DHCPv6 содержится инкапсулированное сообщение сервера.

Обмен сообщениями без сохранения состояния

Обмен сообщениями протокола DHCPv6 без сохранения состояния, предназначенный для получения исключительно параметров настройки (когда флаг M в полученном объявлении маршрутизатора имеет значение 0, а флаг O — значение 1), обычно выглядит следующим образом: клиент DHCPv6 отправляет сообщение Information-Request (запрос данных), запрашивая у сервера параметры настройки, а тот передает сообщение Reply (ответ) с запрошенными параметрами.

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

Поддержка протокола DHCPv6 в системе Windows

В операционную систему Windows Vista™, а также в следующую версию системы Windows Server® с кодовым названием «Longhorn» включен клиент протокола DHCPv6. В зависимости от значений флагов M и O, содержащихся в полученных объявлениях маршрутизатора, клиент пытается использовать настройки на основе протокола DHCPv6. Следовательно, для работы с протоколом DHCPv6 нужно выполнить настройку серверов и агентов ретрансляции таким образом, чтобы они могли обслуживать все подсети IPv6, а затем настроить маршрутизаторы IPv6, чтобы они присваивали двум вышеупомянутым флагам соответствующие значения. Если в отдельно взятой подсети присутствует несколько передающих объявления маршрутизаторов, их нужно настроить так, чтобы они объявляли одни и те же префиксы адресов без сохранения состояния и одинаковые значения флагов M и O. Узлы IPv6, работающие под управлением операционной системы Windows® XP или Windows Server 2003, не имеют клиентов DHCPv6 и по этой причине не учитывают значения флагов M и O в получаемых объявлениях маршрутизаторов.

Чтобы настроить маршрутизатор IPv6 под управлением операционной системы Windows Vista или Windows Server «Longhorn» на присвоение в объявлениях маршрутизатора флагу M значения 1, выполните команду «netsh interface ipv6 set interface InterfaceName managedaddress=enabled». Аналогично, чтобы в объявлениях маршрутизатора присваивать флагу O значение 1, запустите команду «netsh interface ipv6 set interface InterfaceName otherstateful=enabled».

В бета-версии 2 операционной системы Windows Server «Longhorn» реализована поддержка агента ретрансляции DHCPv6 и настройка с помощью службы DHCP-сервера протокола DHCPv6 без сохранения состояния. Службу DHCP-сервера можно настроить таким образом, чтобы параметры протокола DHCPv6 распространялись всем клиентам DHCPv6 с помощью описанной выше процедуры обмена из двух сообщений. Корпорация Майкрософт планирует в бета-версии 3 операционной системы Windows Server «Longhorn» реализовать поддержку режима DHCPv6 с сохранением состояния, в том числе возможность создания областей адресов IPv6 с помощью оснастки DHCP.

Ресурсы RFC, касающиеся протокола DHCPv6

Документы RFC, имеющие отношение к протоколу DHCPv6:

Джозеф Дэвис (Joseph Davies) работает техническим писателем в корпорации Майкрософт. С 1992 года занимается преподаванием и пишет о сетях ОС Windows. Джозеф Дэвис написал пять книг, опубликованных издательством Microsoft Press, и ведет ежемесячную рубрику «Кабельщик» в журнале TechNet Magazine.

© 2008 Корпорация Майкрософт и компания CMP Media, LLC. Все права защищены; полное или частичное воспроизведение без разрешения запрещено.