Какой будет идентификатор интерфейса ipv6 с mac адресом 1c 6f 65 c2 bd f8

Обновлено: 07.07.2024

С развитием Интернет и ввиду постепенного исчерпания адресного пространства IPv4 потребовались решения для его оптимизации. Применение механизма NAT стало временным решением проблемы, однако необходимы были долгосрочные концепции. Многообещающая новая схема адресации по протоколу IPv6 призвана обеспечить на многие года сети следующего поколения. Переход на полную архитектуру IPv6 — шаг прогрессивный, но требующий серьезного пересмотра многих протоколов и приложений, а также стандартов. Архитектура IPv6 нацелена на устранение многих ограничений, имеющихся в текущем наборе протоколов TCP/IP, в первую очередь это касается комплексных мер безопасности и оптимизации работы протоколов для уменьшения объема передаваемой служебной информации. Поскольку IPv6 продолжает развиваться и становится неотъемлемой частью корпоративной сети, ИТ-специалистам крайне необходимы глубокие знания этой архитектуры.

Цели

По окончании этого модуля слушатели смогут:

Объяснить характеристики IPv6.

Объяснить формат адреса IPv6 и типы адресации.

Описать процесс автоматической настройки адреса IPv6 без сохранения состояния.

Адресация IPv6

d

l Исчерпание ограниченного пространства адресов IPv4.

l Адресация IPv6 как средство решения проблемы нехватки адресов .

Являясь набор ом спецификаций , определенных Internet Engineering Task Force (IETF), Internet Protocol версии 6 (IPv6) является стандартом протокола сетевого уровня следующего поколени я и преемником Internet Protocol версии 4 (IPv4). Наиболее очевидная разница IPv6 от IPv4 заключается в удлинении IP- адреса от 32 до 128 бит , благодаря чему IPv6 поддержива ет больше уровней иерархии системы адресации , гораздо большее количество адресных узлов и упрощенную авто матическую конфигурацию адресов .

Существующий диапазон адресов IPv4 был реализован в то время , когда такие сети , как ARPANET и National Science Foundation Network (NSFNET), пред о ставляли основную магистральную сеть , и IPv4 считался более чем достаточным для поддержки хостов , подключаемым к таким формирующим сетям . Непредвиденн ый темп развития Интернета привел к быстрому расходованию адресного пространства IPv4 , состоящего из 4,3 млрд адресов ( многие из которых зарезервированы ), для чего были приняты контрмеры в виде NAT и CIDR , которые оптимизировали использование адресов и дали время, чтобы подготовить более постоянно е решени е . Кроме того, ранние методы распределения сетевых адресов IPv4 не позволяли добиться смежности, что затрудняло объединение адресов в кластеры и эффективные группы и не давало возможности снизить нагрузку глобальных таблиц IP-маршрутизации, используемых в протоколах маршрутизации на основе автономной системы, таких как BGP .

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

Формат заголовка IPv6

h

Заголовок IPv6 оптимизирован для уменьшения объема служебной информации .

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

Термин «поток» можно понимать как непрерывный поток одноадресных ( unicast ) , многоадресных ( multicas ) или произвольных ( anycast ) пакетов, относящихся к конкретному приложению или процессу, которые исходят из определенного источника и передаются в заданный пункт назначения или несколько пунктов назначения. Сетьс коммутацией пакетов работает таким образом, что такие потоки трафика могут передаваться по нескольким путям и поступать в планируемый пункт назначения не по порядку. Затем системные ресурсы должны повторно упорядочить поток пакетов, прежде чем он сможет быть обработан верхними уровнями .

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

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

Также новый протокол поддерживает различные опции без изменения существующего формата пакета путем включения полей заголовка расширения. Идентификатор заголовка расширения содержится в поле Next Header , которое заменяет поле Р rotocol в IPv4, обеспечивая дополнительную гибкость в IPv6 .

Заголовок расширения IPv6

s

Заголовки расширения используются для поддержки параметров, которые не требуется указывать в каждом IP-пакете, таких как фрагментация и IPSec.

Заголовок расширения, являющийся одним из основных изменений в IPv6, оптимизирует структуру заголовка IPv6. Существует несколько заголовков расширений, шестнадцатеричные значения которых указываются в поле Next Header , так же, как идентификаторы заголовков ICMP, TCP, UDP указываются в поле protocol заголовка IPv4. Каждый заголовок расширения также содержит поле Next Header для ссылки на следующий заголовок после обработки заголовка расширения. К одному пакету могут относиться несколько заголовков расширений в порядке их следования. Список заголовков расширений и последовательность их обработки следующие .

Hop-by-Hop Options (Дополнительные функции: ретрансляция)

Destination Options ( Дополнительные функции: узел-получатель)

Encapsulating Security Payload ( Повторное обрамление поля полезной нагрузки с целью её защиты)

Upper-layer ( Верхний слой заголовка ) ( как в туннелировании IPv6)

Каждый заголовок расширения должен встречаться не более одного раза, за исключением заголовка Destination Options , который должен встречаться не более двух раз (один раз перед заголовком Routing и один раз перед заголовком Upper-layer ). Другим ключевым аспектом заголовков расширений является введение протоколов IPSec в форме AH и ESP для повышения общей безопасности IPv6 .

Архитектура адреса IPv6

s

l Адрес IPv6 состоит из префикса и идентификатора интерфейса .

l Адреса обычно отображаются в шестнадцатеричном формате .

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

Сжатие адресов IPv6

f

l Адреса могут быть сжаты путем удаления нулей в старших разрядах .

l Оператор :: продолжит сжимать строки с нулевы ми значени ями .

Для дальнейшего сжатия нулей доступен также специальный синтаксис который представлен в виде двойного двоеточия "::". Это значение указывает одну или несколько 16-битных групп нулей. Однако, чтобы можно было определить размер строки, "::" может появляться только один раз в адресе. Двойное двоеточие "::" может использоваться для сжатия нулей в старших разрядах адреса, как показано в данном примере .

Резервирование адресов IPv6

s

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

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

Многоадресная передача определяется в IPv6 диапазоном FF00::/8, при этом большая часть области адресации резервируется для конкретных адресных диапазонов (таких как link local) и в поддержку протоколов маршрутизации, так же, как используются адреса многоадресной передачи в IPv4. Одно из основных изменений в IPv6 заключается в том, что нет широковещательных адресов, их функция заменяется адресами многоадресной рассылки, что уменьшает объем нежелательной обработки конечными станциями на MAC-уровне в сетях IPv6, так как хосты могут фильтровать группы MAC-адресов многоадресной рассылки.

В IPv6т акже существуют некоторые специальные адреса, включая неуказанный адрес ::/128 для интерфейса, для которого в настоящее время IP-адреса не назначен. Однако это не следует путать с IP-адресом ::/0, который используется как адрес по умолчанию для любой сети так же, как адрес по умолчанию 0.0.0.0/0 используется в IPv4. Для loopback-интерфейса (127.0.0.1) в IPv6 определен зарезервированный адрес ::1/128.

IPv6-адресация: одноадресная передача (Unicast)

d

Префиксы глобальных адресов одноадресной передачи используются для публичных сетей.

Для различных методов IP-передачи зарезервированы диапазоны префиксов.

В о дноадресн ой передаче используются в основном префиксы глобальных адресов одноадресн ой передачи (global link local) и префиксы локальных адресов канала одноадресной передачи ( unicast link local) , однако существуют и другие формы . Все глобальные адреса одноадресн ой передачи имеют 64-битное поле ID интерфейса , за исключением адресов , для которых первые три бита в адресе 000. Для таких адресов нет ограничений по размеру или структуре поля идентификатора интерфейса. Формат глобальных адресов одноадресной передачи иерархичен: префикс глобальной маршрутизации и идентификатор подсети, за которым следует идентификатор интерфейса. Структура префикса глобальной маршрутизации позволяет региональным интернет-регистраторам (RIR) и поставщиками интернет-услуг (ISP), между которыми регистраторы распределяют эти префиксы, иерархически систематизировать его. Администратор сайта должен иерархически структурировать поле подсети, чтобы обеспечить до 65 535 отдельных подсетей .

Локальный адрес канала одноадресной передачи FE80::/10: первые 10 битов четко определены как 1111111010. Диапазон адресов 64-битного интерфейса более чем достаточен для выделения адресов хостам, и поэтому оставшиеся 54 бита в локальном адресе канала поддерживаются равными 0. В этом примере показаны форматы адресов, которые обычно могут быть связаны с каждым из общих типов адресов одноадресной рассылки.

Следует также отметить, что третья схема адресации при одноадресной рассылке, называемая адресацией локального сайта (FC00::/7), была первоначально предложена в RFC3513 и может появиться в некоторых реализациях IPv6, однако диапазон адресации устарел с RFC4291 и следует избегать его использования в будущих реализациях .

IPv6-адресация: многоадресная передача (Multicast)

s

l А дреса многоадресной рассылки отличаются префиксом FF00::/8.

l Для использования протокола зарезервированы группы адресов многоадресной рассылки .

Адрес многоадресной передачи является идентификатором набора интерфейсов (обычно принадлежащих разным узлам). Пакет, отправленный на адрес многоадресной передачи, доставляется на все интерфейсы, идентифицированные этим адресом. Диапазон адресов многоадресной передачи определяется по префиксу адреса FF00::/8 и четко отличается от первых 8 битов, которые всегда установлены как 11111111. Архитектура адреса многоадресной передачи состоит из полей flags ( флаги), scope ( область действия) и group ID ( идентификатор группы).

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

Область действия определяет ряд потенциальных диапазонов, к которым применяется многоадресная передача. Обычно это область действия локального узла FF01:: или область действия локального канала FF02. то есть адреса приемных узлов в области действия на уровне канала, например сегмент Ethernet , для которого шлюз определяет границу. Обычные локальные адреса канала многоадресной передачи ( multicast link local) включают FF02::1, который используется для пересылки всем узлам, и FF02::2, который обеспечивает многоадресную передачу всем адресам маршрутизаторов.

IPv6 адресация: передача любому устройству группы (Anycast)

d

Метод Anycast позволяет выделить нескольким экземплярам сервиса один адрес, что позволяет использовать различные сервисные приложения.

В методе Anycast используется один идентификатор для набора интерфейсов (обычно принадлежащих разным узлам). Пакет, отправленный на прои звольный адрес, доставляется на один из интерфейсов, указанных в этом адресе («ближайший» в соответствии с измерением расстояния, выполненным протоколом маршрутизации). Архитектура anycast обычно включает инициатора anycast и одного или нескольких ответчиков anycast .

Используя адресацию anycast , инициатор anycast автоматически устанавливает связь с другим сервером, использующим тот же адрес, обеспечивая эффективное решение для резервирования.

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

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

Автоматическая настройка адреса IPv6 без сохранения состояния

d

l Хосты способны самостоятельно генерировать адреса IPv6.

l В объявлениях м аршрутизатор ов передается информаци я о параметрах сети .

EUI-64 для автоматической настройки IP-адреса без сохранения состояния

s

MAC-адрес хоста вводится в виде 16-битных значений «FF» и «FE», а 7-й бит аннулируется, чтобы сгенерировать 64-битный идентификатор интерфейса для адреса IPv6.

Для организации связи по сети IPv6 каждому интерфейсу должен быть присвоен действительный адрес IPv6. Идентификатор интерфейса адреса IPv6 может быть определен либо посредством ручной настройки сетевым администратором, либо сгенерирован с помощью системного программного обеспечения, либо сгенерирован с использованием формата 64-битного расширенного уникального идентификатора IEEE (EUI-64).

Старший седьмой бит в адресе представляет универсальный/локальный бит для включения идентификаторов интерфейса с универсальной областью действия. Если это значение равно 0, MAC-адрес уникален локально. Во время преобразования процесс EUI-64 вставляет два октета значений «0xFF» и «0xFE» на общую сумму 16 битов между идентификатором поставщика и идентификатором расширения MAC-адреса, и универсальный/локальный бит 0 заменяется единицей (1), чтобы указать, что ID интерфейса теперь представляет глобально уникальное значение адреса. 64-битный идентификатор интерфейса создается и привязывается к префиксу интерфейса для генерации адреса интерфейса IPv6.

DAD для автоматической настройки адреса IPv6 без сохранения состояния

d

l О бнаружение дублирующихся адресов (DAD) используется в IPv6 для проверки уникальности адреса перед его применением к интерфейсу хоста .

Перед тем , как адрес одноадресной передачи IPv6 будет присв оен интерфейсу , выполняется функция обнаружения дублирующихся адресов (DAD), которая провер яет , используется ли этот адрес другим узлом . DAD требуется, если IP-адреса настраиваются автоматически. Адрес IPv6 одноадресной передачи, назначенный интерфейсу, но не проверенный функцией DAD, называется предварительным адресом. Интерфейс не может использовать предварительный адрес для одноадресной передачи, но может присоединиться к двум группам многоадресной рассылки: группе многоадресной рассылки на все узлы ( ALL-node) и группе многоадресной рассылки на запрашиваемые узлы ( Solicited-Node ) .

Адрес многоадресной передачи запрошенным узлам создается путем взятия последних 24 бит одноадресного или произвольного адреса и добавления к адресу префикса FF02:0:0:0:0:1:FF00::/104. В случае использования адреса 2000::1 будет сгенерирован адрес многоадресной передачи Solicited-Node FF02::1:FF00:1.

Вопросы

Какое наименьшее возможное сжатое значение IPv6 возможно для адреса 2001:0DB8:0000:0000:0000:0000:032A:2D70?

Каким образом конечная станция может самостоятельно генерировать адрес IPv6?

Фиксируя длину идентификатора интерфейса, мы подразумевали, что теперь это поле сможет вместить в себя канальный адрес в формате EUI 64. Это было бы в высшей степени удобно, ведь адреса EUI 64 призваны быть глобально уникальными — по крайней мере, пока они получены у IEEE . Например, чтобы автоматически назначить интерфейсу уникальный внутриканальный адрес 1 Разумеется, ему достаточно уникальности в пределах канала. , в первом приближении будет достаточно соединить префикс FE80::/64. и адрес EUI 64 этого интерфейса. Например, интерфейс с адресом EUI 64 00-11-22-33-44-55-66-77 получил бы, по такой предварительной схеме, внутриканальный адрес FE80::11:2233:4455:6677.

То есть между OUI и добавочным идентификатором возникают еще два байта с определенными значениями: FF-FE в случае EUI-48 и FF-FF в случае MAC 48. Например, из EUI-48 02-35-AB-00-64-C1 получится такой EUI 64: 02-35-AB-FF-FE-00-64-C1 (добавочные байты подчеркнуты).

По этой причине IEEE не разрешает производителям оборудования расходовать добавочные идентификаторы EUI-64, которые начинаются с FF-FE и FF-FF.

Постойте, а в чем состоит разница между EUI-48 и MAC -48? Пока мы не запутались в этом вопросе, давайте изучим его современную интерпретацию, потому что она нам сейчас же понадобится. Оба типа адресов находятся в ведении IEEE . По первоначальной задумке, MAC 48 служили канальными адресами IEEE 802, а EUI 48 — идентификаторами в прочих технологиях. Вначале IEEE даже допускал, что пространства этих адресов могут быть разными, несмотря на одинаковый формат.

Циник заметил бы, что IEEE хотел продать одни и те же байты дважды.

Однако сегодня из документов IEEE однозначно следует, что MAC -48 — это устаревший термин для подмножества EUI - 48 3 Guidelines for use of the 24-bit Organizationally Unique Identifiers (OUI). IEEE. http://standards.ieee.org/regauth/oui/tutorials/UseOfEUI.html . Так что мы вправе говорить " EUI-48 ", подразумевая " MAC -48 и Все-все-все". Кроме того, нам можно забыть о правиле преобразования MAC -48 в EUI -64 и пользоваться только правилом для EUI-48 .

Придирчивый читатель может заметить, что адрес и идентификатор — не одно и то же. Тем не менее, идентификатор может быть адресом при соблюдении дополнительных условий. Например, в классической технологии Ethernet идентификатор может быть адресом благодаря тому, что изначально Ethernet был широковещательной средой. В этих условиях адрес мог не обладать свойствами локатора; ему не нужно было отвечать на вопрос: "Где находится данный узел?" Эта особенность не могла не наложить отпечаток на последующее развитие коммутируемого Ethernet: именно из-за нее коммутаторам Ethernet приходится динамически изучать расположение станций на своих портах.

Отлично, теперь вернемся к нашим текущим делам и внимательнее посмотрим на свойства гипотетического адреса IPv6, автоматически полученного соединением префикса подсети и идентификатора EUI -64. Благодаря уникальности EUI -64, мы надеемся, что полученный адрес IPv6 окажется уникальным; но как мы сможем гарантировать, что на другом узле тот же самый адрес не будет назначен вручную?

Поясним наше опасение примером. Допустим, что к одному каналу подключены два узла IPv6, А и Б. Их интерфейсам требуются внутриканальные адреса. Узел А получает внутриканальный адрес от нас, а узел Б пытается выбрать его автоматически, располагая адресом EUI -64 на своем интерфейсе. Мы решили назначить узлу А адрес FE80::11:2233:4455:6677. Как нам удостовериться, что узел Б не выберет тот же самый адрес ? Заранее убедиться, что его EUI -64 не равен 00-11-22-33-44-55-66-77? Очевидно, что такая "автоматика" недорого стоит, потому что мы обеспечиваем ее работу вручную. Представьте, что таких узлов не два, а тысяча, и 999 из них выбирают адрес автоматически, на основе EUI -64. Неужели нам придется обойти все 999 узлов, чтобы правильно выбрать тысячный адрес ?

Чтобы разрешить это затруднение, нам надо вспомнить, что мы знаем об адресе MAC 48, он же EUI 48. Такой адрес обладает определенной структурой, и, к нашему счастью, она сохранилась в EUI 64 без изменений, с точностью до длины поля "добавочный идентификатор ", как это показано на рис. 2.5.

Формат OUI и соответствие между разными типами EUI


Рис. 2.5. Формат OUI и соответствие между разными типами EUI

Сейчас основной интерес для нас представляет бит U/L, он же u, который отличает адреса, выданные глобально (полученные из рук IEEE ), от адресов, назначенных локально ( по усмотрению администратора сети). Второй бит , который нам придется учитывать в дальнейшем, — бит I/G, он же g, — отличает групповые адреса от индивидуальных. Преобразование из EUI 48 в EUI 64 сохраняет эти биты. Благодаря биту U/L мы можем избежать конфликтов хотя бы с EUI -64, назначенными производителем аппаратуры. Например, в EUI -64 00-11-22-33-44-55-66-77 этот бит сброшен, а значит, это глобальный идентификатор , и нам следует избегать его. И наоборот, EUI -64 02-11-22-33-44-55-66-77 — локальный, так что мы можем выбрать его в качестве идентификатора интерфейса, не опасаясь конфликта с адресом какой-нибудь сетевой карты.

Обобщим эту мысль: идентификатор интерфейса в адресе IPv6 должен основываться на идентификаторе EUI -64 и наследовать его формат. Однако если мы перенесем этот формат без изменений, то окажется, что мы больше не вправе назначать интерфейсам простые, короткие номера: 2001:DB8::1, 2001:DB8::2 и т.д. Ведь если мы рассмотрим, к примеру, число 1 с позиций EUI -64, то это окажется 00-00-00-00-00-00-00-01 — глобально выданный идентификатор , и мы нарушим наше собственное правило. Иначе говоря, нам придется всегда устанавливать бит U/L в идентификаторах интерфейсов, которые мы выдумываем сами, например, 2001:DB8::1 нам придется заменить на 2001:DB8:0:0:200:0:0:1.

Как нам избежать этого неудобства? Возможный выход здесь — это задать взаимно однозначное отображение между настоящим EUI -64 и идентификатором интерфейса IPv6. Ведь нас никто не заставляет точно копировать формат EUI -64 — нам достаточно сохранить содержащуюся в нем информацию. Правило этого отображения очевидно: инвертировать бит U/L, с тем чтобы удобные короткие идентификаторы 1, 2, 3… стали доступны для локального назначения. В результате мы получаем так называемый модифицированный формат EUI -64 (modified EUI 64 format), который отличается от EUI 64 только интерпретацией значений бита U/L: теперь 0 означает "локальный", а 1 — "глобальный" [§2.5.1 и Приложение A RFC 4291].

Окончательное требование таково: идентификатор интерфейса в адресе IPv6 обязан отвечать модифицированному формату EUI-64. Это правило распространяется на все индивидуальные адреса IPv6 кроме блока ::/3, зарезервированного для особых целей [§2.5.1 RFС 4291].

Чтобы по этому правилу "изготовить" из EUI -64 адрес IPv6, надо сначала инвертировать бит U/L, а затем добавить перед полученной цепочкой битов (то есть в старших разрядах) данный префикс подсети.

Тогда аналогичный рецепт для EUI 48 ( MAC 48) может быть комбинацией двух уже известных нам шагов: сначала от EUI 48 к EUI 64, а затем от EUI 64 к IPv6:

а)вставить между третьим и четвертым байтами EUI 48 (то есть между OUI и добавочным идентификатором) последовательность двух байтов FF-FE

а)инвертировать бит U/L;

б)присоединить спереди префикс подсети.

Вот несколько примеров прямого преобразования:

  • Из EUI 64 00-11-22-33-44-55-66-77 и префикса 2001:DB8::/64 получается адрес IPv6 2001:DB8::211:2233:4455:6677.
  • Из EUI 48 (или MAC 48) 10-20-30-40-50-60 и внутриканального префикса (FE80::/64) получается внутриканальный адрес IPv6 FE80::1220:30FF:FE40:5060.

Возможен и обратный анализ :

  • Адрес IPv6 2001:DB8::D00F — назначен локально, так как бит U/L в идентификаторе интерфейса сброшен.
  • Адрес IPv6 2001:DB8::200:FF:FE00:D00F — получен из глобального EUI 48 00-00-00-00-D0-0F.
  • Адрес IPv6 2001:DB8::200:0:0:D00F — получен из глобального EUI 64 00-00-00-00-00-00-D0-0F.

Хотя большая часть локальных идентификаторов интерфейса (U/L = 0) доступна администраторам и пользователям для их собственных нужд, среди них есть несколько зарезервированных [ RFC 5453]. Объяснить, откуда они возникают, мы сможем позже. В частности, зарезервировано нулевое значение , 0000:0000:0000:0000.

В завершение раздела зададим себе такой вопрос: достаточно ли сформулированных нами правил, чтобы автоматически гарантировать уникальность адреса IPv6? Для ответа на него рассмотрим вот какой сценарий . Представим себе, что к одному каналу подключены два интерфейса, А и Б, причем интерфейсу А заранее назначен локальный EUI-64 02-00-00-00-00-00-00-01 — это вполне законно. Далее администратор сети назначает интерфейсу Б внутриканальный адрес IPv6 FE80::1. Он тоже имеет на это полное право, потому что такой адрес отвечает нашим требованиям. И наконец узел, управляющий интерфейсом А, автоматически назначает своему интерфейсу внутриканальный адрес IPv6 на основе уже доступного EUI 64. Как нетрудно видеть, это окажется то же самый адрес FE80::1, и в зоне данного канала возникнет конфликт адресов.

Корень проблемы здесь состоит в том, что локально назначенные идентификаторы интерфейсов IPv6 неявно занимают ячейки в подмножестве локальных идентификаторов EUI-64.

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

Возникла у меня идея познакомить публику Хабра с IPv6 и настройкой протоколов на основе этого замечательного и еще плохо изученного сетевыми специалистами протокола. Для этих целей я остановлюсь на двух основных вендорах, это Juniper и Cisco. Моя статья будет состоять из трех частей. В первой части я соберу всю самую скучную, но очень нужную теорию. Рассмотрим поля протокола ipv6, принципы работы, разбиение на подсети и поставлю себе задачу, как можно больше акцентировать внимание на отличии его от любимого IPv4.

Ну что же, начнем, и начнем мы с плана.


• Заголовок IPv6 в сравнении с IPv4
• Представление IPv6-адресов
• Типы совместного использование протоколов IPv4 и IPv6
• Типы адресов
• Разбиение на подсети

Введение

Программисты постоянно соревнуются со Вселенной: они пытаются создать всё более идиотоустойчивые программы, а Вселенная создаёт всё более совершенных идиотов. Пока что Вселенная побеждает. (Rich Cook)

Заголовок IPv6 в сравнении с IPv4

Одним из основных конструктивных улучшений протокола IPv6 по сравнению с IPv4 является упрощённый заголовок IPv6. Заголовок IPv4 состоит из 20 октетов (до 60 байт, если используется поле «Параметры») и 12 основных полей заголовка, не учитывая поля «Параметры» и «Заполнитель». Заголовок IPv6 состоит из 40 октетов (главным образом из-за длины адресов IPv6 источника и назначения) и 8 полей заголовков (3 основных поля заголовков IPv4 и 5 дополнительных полей). Кроме того, в IPv6 добавлено новое поле, которое не используется в протоколе IPv4. Упрощённый заголовок IPv6 предлагает ряд преимуществ по сравнению с IPv4: повышенная эффективность маршрутизации для масштабируемости производительности и скорости пересылки; не требуется обработка контрольных сумм; упрощённые и более эффективные механизмы заголовков расширений (в отличие от поля «Параметры» в IPv4); поле «Метка потока» предназначена для обработки по потокам без необходимости открывать транспортный внутренний пакет для определения различных потоков трафика. В заголовке пакета IPv6 используются следующие поля:

Версия: поле, содержащее 4-битное двоичное значение, которое определяет версию IP-пакета. Для пакетов IPv6 в этом поле всегда указано значение 0110.

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

Длина полезной нагрузки: 16-битное поле, соответствующее полю «Общая длина» в заголовке IPv4. Оно определяет размер всего пакета (фрагмента), включая заголовок и дополнительные расширения.


"

Основная проблема программистов состоит в том, что их ошибки невозможно предугадать. (Seymour Cray)

Представление IPv6-адресов

Длина IPv6-адресов составляет 128 бит, написанных в виде строки шестнадцатеричных значений.бита представлены одной шестнадцатеричной цифрой, причём общее количество шестнадцатеричных значений равно 32. Примеров перевода из шестнадцатеричной системы счисления в двоичную и десятичную в данной статье не будет. Любой уважающий себя сетевой специалист должен уметь в уме переводить из разных систем счисления, ведь не за красивые глазки сетевые специалисты получают деньги — и не маленькие.

Опишем два важных правила для правильного представления IPv6 адресов.

1) Правило номер 1:
Первое правила для сокращения записи IPv6-адресов — пропуск всех ведущих 0 в шестнадцатеричной записи. Например:
01AB можно представить как 1AB
09F0 можно представить как 9F0
0A00 можно представить как A00
00AB можно представить как AB

Это правило применяется только к ведущим нулям, а НЕ к последующим, иначе адрес будет записан неясно. Например, шестнадцатеричное число «ABC» может быть представлено как «0ABC» или «ABC0».

2) Правило номер 2:
Второе правила для сокращения записи адресов IPv6 заключается в том, что двойное двоеточие (::) может заменить любую единую, смежную строку одного или нескольких 16-битных сегментов (хекстетов), состоящих из нулей. Двойное двоеточие (::) может использоваться в адресе только один раз.

Неверный адрес:
2001:0DB8::ABCD::1234

Возможные расширения неоднозначно записанных сжатых адресов:
2001:0DB8::ABCD:0000:0000:1234
2001:0DB8::ABCD:0000:0000:0000:1234
2001:0DB8:0000:ABCD::1234
2001:0DB8:0000:0000:ABCD::1234

Для начала изучите теорию. Затем обретите собственный стиль программирования. И, наконец, забудьте об этой ерунде и просто пишите код. (George Carrette)

Типы совместного использование протоколов IPv4 и IPv6

Двойной стек: двойной стек позволяет протоколам IPv4 и IPv6 сосуществовать в одной сети. Устройства с двойным стеком одновременно работают с протокольными стеками IPv4 и IPv6 (рисунок прилагается):


Туннелирование — это способ транспортировки IPv6-пакетов через IPv4-сеть. IPv6-пакет инкапсулируется внутри IPv4-пакета, как и другие типы данных


Преобразование — преобразование сетевых адресов 64 (NAT64) позволяет устройствам под управлением IPv6 обмениваться данными с устройствами под управлением IPv4 с помощью метода преобразования, похожего на метод преобразования из NAT для IPv4. IPv6-пакет преобразовывается в пакет IPv4-пакет и наоборот.


Для начала изучите теорию. Затем обретите собственный стиль программирования. И, наконец, забудьте об этой ерунде и просто пишите код. (George Carrette)

Типы IPv6- адресов

Существует три типа IPv6–адресов:

Unicast (индивидуальный) – Служит для определения интерфейса на устройстве под управлением протокола IPv6

Multicast (Групповой) – Используется для отправки пакетов по нескольким адресам назначения (Заменил собой Broadcast адрес, имеется IPv6- адрес для всех узловБкоторый дает аналогичный результат.)

Anycast (Произвольный) – Любой индивидуальный адрес, который может быть назначен нескольким устройствам. Пакет, отправляемый на адрес произвольной рассылки, направляется к ближайшему устройству с этим адресом.

Для ознакомления с типами адресов нам понадобится следующая информация: префикс, или сетевая часть адреса IPv4, может быть обозначен маской подсети в десятичном формате с разделительными точками или длиной префикса (запись с наклонной чертой). Например, IP-адрес 192.170.6.11 с маской подсети в десятичном формате с разделительными точками 255.255.255.0 эквивалентен записи 192.170.6.11/24.

Протокол IPv6 использует длину префикса для обозначения части префикса адреса. IPv6 не использует для маски подсети десятичное представление с разделительными точками. Длина префикса обозначает сетевую часть IPv6-адреса с помощью адреса или длины IPv6-префикса.Диапазон длины префикса может составлять от 0 до 128. Традиционная длина IPv6-префикса для локальных и других типов сетей — /64. Это означает, что длина префикса, или сетевая часть адреса, составляет 64 бита, а оставшиеся 64 бита остаются для идентификатора интерфейса (узловой части) адреса.


Образование в сфере компьютерных технологий точно так же не сделает из вас отличного программиста, как изучение кистей и красок не сделает вас прекрасным художником. (Eric Raymond)
Unicast IPv6 адреса

Unicast адрес служит для определения интерфейса устройства под управлением протокола IPv6. Пакет, который отправляется на unicast адрес, будет получен интерфейсом, присвоенным для этого адреса. Как и в случае с протоколом IPv4, IPv6-адрес должен быть индивидуальным.

Существует шесть типов Unicast адресов:

Global unicast адрес
Global unicast адрес мало чем отличается от публичного IPv4-адреса. Эти адреса, к которым можно проложить маршрут по Интернету, являются уникальными по всему миру. Глобальные индивидуальные адреса могут быть настроены статически или присвоены динамически.

Link-local
Local IPv6-адрес канала позволяет устройству обмениваться данными с другими устройствами под управлением IPv6 по одному и тому же каналу и только по данному каналу (подсети). Пакеты с локальным адресом канала источника или назначения не могут быть направлены за пределы того канала, в котором пакет создаётся. В отличие от локальных IPv4-адресов канала, локальные адреса канала IPv6 играют важную роль в различных аспектах сети. Глобальный индивидуальный адрес не обязателен. Однако для содержания локального адреса канала необходим сетевой интерфейс под управлением протокола IPv6. Если локальный адрес канала не настроен вручную на интерфейсе, устройство автоматически создаёт собственный адрес, не обращаясь к DHCP-серверу. Узлы под управлением IPv6 создают локальный IPv6-адрес канала даже в том случае, если устройству не был назначен глобальный IPv6-адрес. Это позволяет устройствам под управлением IPv6 обмениваться данными с другими устройствами под управлением IPv6 в одной подсети, в том числе со шлюзом по умолчанию (маршрутизатором). Локальные IPv6-адреса канала находятся в диапазоне FE80::/10. /10

Loopback
Loopback-адрес используется узлом для отправки пакета самому себе и не может быть назначен физическому интерфейсу. Как и на loopback-адрес IPv4, для проверки настроек TCP/IP на локальном узле можно послать эхо-запрос на loopback-адрес IPv6. Loopback-адрес IPv6 состоит из нулей, за исключением последнего бита, который выглядит как ::1/128 или просто ::1 в сжатом формате.

Unspecified address
Неопределённый адрес состоит из нулей и в сжатом формате представлен как ::/128 или просто :: Он не может быть назначен интерфейсу и используется только в качестве адреса источника в IPv6-пакете. Неопределённый адрес используется в качестве адреса источника, когда устройству еще не назначен постоянный IPv6-адрес или когда источник пакета не относится к месту назначения.

Unique local
Unique local — IPv6-адреса имеют некоторые общие особенности с частными адресами RFC 1918 для IPv4, но при этом между ними имеются и значительные различия. Уникальные локальные адреса используются для локальной адресации в пределах узла или между ограниченным количеством узлов. Эти адреса не следует маршрутизировать в глобальном протоколе IPv6. Уникальные локальные адреса находятся в диапазоне от FC00::/7 до FDFF::/7.В случае с IPv4 частные адреса объединены с преобразованием сетевых портов и адресов (NAT/PAT) для обеспечения преобразования адресов из частных в публичные. Это делается из-за недостатка адресного пространства IPv4. На многих сайтах также используют частный характер адресов RFC 1918, чтобы обеспечить безопасность или защитить сеть от потенциальных угроз. Однако такая мера никогда не была целью использования данных технологий, и организация IETF всегда рекомендовала предпринимать правильные меры предосторожности при работе маршрутизатора в Интернете. Хотя протокол IPv6 обеспечивает особую адресацию для сайтов, он не предназначен для того, чтобы скрывать внутренние устройства под управлением IPv6 от Интернета IPv6. IETF рекомендует ограничивать доступ к устройствам с помощью наилучших мер безопасности

IPv4 embedded
Последними из рассматриваемых типов индивидуальных адресов являются встроенные IPv4-адреса. Использование этих адресов способствует переходу с протокола IPv4 на IPv6.

Global unicast адрес
Global unicast IPv6-адреса уникальны по всему миру и доступны для маршрутизации через Интернет IPv6. Эти адреса эквивалентны публичным IPv4-адресам. В настоящее время назначаются только глобальные индивидуальные адреса с первыми тремя битами 001 или 2000::/3. Это лишь 1/8 от всего доступного адресного пространства IPv6. Адрес 2001:0DB8::/32 был зарезервирован для документации, в том числе для использования в примерах.

Глобальный индивидуальный адрес состоит из трёх частей:
Префикс глобальной маршрутизации — Префикс глобальной маршрутизации — это префиксальная или сетевая часть адреса, назначаемая интернет-провайдером заказчику или узлу. В настоящее время /48 является префиксом глобальной маршрутизации, который в настоящее время интернет-регистраторы назначают своим заказчикам — корпоративным сетям и индивидуальным пользователям. Этого адресного пространства более чем достаточно для большинства заказчиков.
Идентификатор подсети — Идентификатор подсети используется организациями для обозначения подсетей в каждом узле.
Идентификатор интерфейса — Идентификатор IPv6-интерфейса эквивалентен узловой части адреса IPv4-адреса. Термин «идентификатор интерфейса» используется в том случае, когда один узел может иметь несколько интерфейсов, каждый из которых обладает одним или более IPv6-адресами.


В мире нет такого языка программирования, на котором разработчики не смогли бы написать плохую программу. (Larry Flon)
Multicast IPv6

Мало чем отличаются от multicast IPv4-адресов. Как вы помните, multicast адрес используется для отправки одного пакета по одному или нескольким назначениям (группе мультивещания). Multicast IPv6-адреса имеют префикс FF00::/8. Multicast адреса могут быть только адресами назначения, а не адресами источника. Существует два типа:

1) групповые IPv6-адреса:
2) присвоенный групповой адрес;

1) Групповой адрес запрошенного узла. Присвоенные групповые адреса зарезервированы для заданных групп устройств. Присвоенный групповой адрес — это один адрес, используемый для осуществления связи с группой устройств, работающих на одном протоколе или сервисе. Присвоенные групповые адреса используются вместе с конкретными протоколами, например с протоколом DHCPv6.

Рассмотрим две распространённые группы присвоенных групповых IPv6-адресов.

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

Групповой адрес запрашиваемого узла — это адрес, который соответствует только 24 битам глобального индивидуального IPv6-адреса устройства. Обрабатывать эти пакеты должны только те устройства, которые имеют аналогичные 24 бита в наименее значащей, крайней правой части идентификатора интерфейса.

2) Групповой IPv6-адрес запрашиваемого узла создаётся автоматически при назначении глобального индивидуального адреса или локального адреса канала. Групповой IPv6-адрес запрашиваемого узла создаётся посредством объединения специального префикса FF02:0:0:0:0:1:FF00::/104 с крайними правыми 24 битами его индивидуального адреса.

Групповой адрес запрашиваемого узла состоит из 2 частей.

Если отладка — процесс удаления ошибок, то программирование должно быть процессом их внесения. (Edsger W. Dijkstra)

Разбиение на подсети

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

Разбиение на подсети с использованием идентификатора подсети: Как вы помните, блок IPv6-адресов с префиксом /48 содержит 16 бит идентификатора подсети, как показано на рисунке. Разбиение на подсети с использованием 16 бит идентификатора подсети даёт 65 536 возможных подсетей /64. Поэтому нет необходимости заимствовать биты из идентификатора интерфейса или узловой части адреса. Каждая IPv6-подсеть /64 содержит примерно 18 квинтиллионов адресов, что, как очевидно, гораздо больше, чем когда-либо понадобится в одном сегменте IP-сети.Подсети, созданные из идентификатора подсети, легко представить, поскольку не нужно выполнять преобразование в двоичный формат. Чтобы определить следующую доступную подсеть, достаточно рассчитать следующее шестнадцатеричное число.Необходимо применить расчёт части идентификатора подсети в шестнадцатеричной системе счисления.Префикс глобальной маршрутизации является одинаковым для всех подсетей. Для каждой подсети увеличивается только четырёхразрядный байт идентификатора подсети.


Разбиение на подсети с использованием идентификатора интерфейса — В IPv6-сетях по аналогии с заимствованием бит из узловой части IPv4-адреса можно позаимствовать биты из идентификатора интерфейса для создания дополнительных IPv6-подсетей. Как правило, это делается по соображениям безопасности, чтобы уменьшить число узлов в подсети и создавать дополнительные подсети. При расширении идентификатора подсети путём заимствования бит из идентификатора интерфейса рекомендуется создавать подсеть на границе полубайта. Полубайт — это 4 бита или одна шестнадцатеричная цифра. Префикс подсети /64 расширяется на четыре бита или один полубайт до подсети /68. Это позволяет уменьшить размер идентификатора на 4 бита (с 64 до 60). Разбиение на подсети по границе полубайта имеет значение только для масок подсетей, выровненных по полубайту. Начиная с /64, масками подсети, выровненными по полубайту, будут являться маски /68, /72, /76, /80 и т. д. Разбиение на подсети по границе полубайта позволяет создать подсети с использованием дополнительного шестнадцатеричного значения. Можно создать подсеть в пределах полубайта, используя шестнадцатеричную цифру, однако это не рекомендуется и, кроме того, в этом нет необходимости. Разбиение на подсети в пределах полубайта сводит на нет преимущества быстрого определения префикса из идентификатора интерфейса. Например, если используется длина префикса /66, первые два бита были бы частью идентификатора подсети, а вторые два бита — частью идентификатора интерфейса.


всегда пишите код так, как будто сопровождать его будет психопат, который знает, где вы живёте. (Martin Golding)

Список используемой литературы

Выше я описал основные моменты IPv6 его отличия от IPv4. В следующих частях будет больше практической работы. Напомню, во второй части будет описана настройка основных протоколов на оборудовании CIsco, также опишу принцип работы DHCPV6. В третьей части будет описана настройка IPv6 уже на оборудовании Juniper.

Конечным пользователям рекомендуется использовать подсети /64, как стандарт.

Мультикаст адреса начинаются на FF

Link-local адреса. Используются на линке для связи с соседним устройством. Дальше маршрутизатора не проходят.

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

Поскольку броадкаста нет, любой интерфейс ipv6 обязан зарегистрироваться в служебных мультикаст группах:

Адрес "все узлы" используется вместо броадкаста.

к этому адресу справа дописывают 24 младших бита юникаст адреса интерфейса. Адрес "запрошенный узел" создается для каждого юникаст адреса интерфейса и используется в процессе Neighbor Discovery.

ULA адреса FD00::/8 - Unique Local Address

Scopes

IPv6 на маршрутизаторах cisco IOS

Включить ipv6 маршрутизацию (по-умолчанию выключена)

Задать ipv6-адрес на интерфейсе int fa 0/0

Задать адрес в формате EUI-64

В данном примере на интерфейс назначится глобально-маршрутизируемый адрес: из пула IANA - 200, тестовый регистратор - 10D, провайдер B8, клиент - 3С4В, подсеть - 7777, длина префикса /64, идентификатор интерфейса будет назначен как EUI-64 (дополненный мак-адрес).

В ipv6 нет броадкаст адресов, зато каждый ipv6 интерфейс автоматически участвует в нескольких мультикаст группах

Просмотр таблицы ipv6 маршрутов

Как и в случае с ipv4, туда автоматом попадают directly connected сети.

Посмотреть кэш соответствий IPv6-MAC можно командой

Статические маршруты прописываются, как обычно, в формате префикс-шлюз:

OSPFv3

Для запуска OSPFv3 в ipv6 требуется включать ospf глобально и на интерфейсах. Router-id требуется указать вручную, если на маршрутизаторе нет ipv4 адресов.

Чтобы сеть анонсировалась, надо на интерфейсе указать принадлежность ospf процессу и area. Чтобы с интерфейса не рассылались анонсы, этот интерфейс надо прописать как passive при настройке ospf процесса.

DNS для IPv6

Автоконфигурация

DAD - Duplicate Address Detection

DHCPv6 - можно задать адрес, но нет концепции шлюза. Можно выдать адрес DNS-сервера.

DHCPv6-PD - делегирование префикса: клиент получает в свое распоряжение префикс из диапазона провайдера, провайдер автоматом устанавливает статический маршрут на этого клиента.

RA - анонс маршрутизатора: указывает клиенту префикс сети, в котором он находится. Можно разрешить или запретить использование клиентом DHCPv6/SLAAC. Нельзя выдать адрес DNS-сервера.

Читайте также: