Гость из недалекого будущего
С выходом новых версий ОС Windows и соответственно обновленных служб, нередко в списке изменений встречаются такие фразы как «Добавлена поддержка IPv6 или IPv6 совместимо». Большинству администраторов понятно, что речь идет о новой версии протокола IP, но, как правило, этим познания и заканчиваются. Я предлагаю немного разобраться с данным вопросом, ибо, если верить прогнозам довольно скоро IPv6 перейдет из статуса «таинственной новинки» в ежедневную обыденность. Но для начала давайте поймем, чего не хватает IPv4 на современном этапе.
Одной из основных проблем называют истощение адресного пространства, напомню, что размер адресного пространства IPv4 равен 232, а это более чем 4 млрд. узлов. С этим можно поспорить, фактически при использовании технологии NAT адресное пространство растягивается до бесконечности, но тогда появляется другая проблема, связанная со строго ограниченным количеством портов. Ясно одно, свободные, не зарегистрированные адреса, в ближайшие 10 лет подойдут к концу, а по некоторым подсчетам «Время Х» наступит в течение ближайших 2-3 лет.
Другим камнем в огород IPv4 считается неэффективная маршрутизация, которая заложена в самой идеологии протокола, что в свою очередь приводит к хранению на магистральных маршрутизаторах десятков тысяч маршрутов и как следствие чрезмерную их нагрузку, особенно при перестроении таблиц маршрутизации. Если в начале 90-х для размещения маршрутной таблицы в маршрутизаторе хватало 4-8 Мбайт, то сейчас требования к памяти превысили отметку в 100 Мбайт.
Еще одним неотъемлемым атрибутом корпоративных сетей IPv4, является служба DCHP отвечающая за выдачу IP адресов клиентам. Если не учитывать такую «детскую» технологию как APIPA можно смело сказать, что встроенное автоконфигурирование в IPv4 отсутствует.
На мой взгляд, самой серьезной проблемой IPv4 является безопасность. Несмотря на то, что стек TCP/IP был разработан по инициативе Министерства обороны США, своим появлением он во многом обязан академической, университетской среде, которую в тот момент возможность передачи данных волновала гораздо больше, чем сохранение их конфиденциальности. Появившееся впоследствии протоколы IPsec, SSL, TLS были призваны решить проблему безопасности и отчасти ее решили, к сожалению усложнив при этом управление передачей данных.
После появления протокола IPv4 большую популярность получили потоковые мультимедиа-приложения, VoIP и видеоконференции, которые требуют гарантированной пропускной способности и не превышения максимальной задержки. Т. е обеспечения качества обслуживания. (Quality of Service). В IPv4 существует специальное поле «Type of service», но механизм интерпретации и резервирования его определен не был, поэтому абсолютное большинство существующих маршрутизаторов попросту игнорируют это поле в заголовке IPv4.
Список этот можно продолжить недостаточным размером заголовка IPv4, но я думаю и этого вполне достаточно, чтобы будущее посмотрело в сторону IPv6. Так что же изменится с переходом на новый протокол?
Прежде всего, это размер IP адреса, в IPv6 он составляет 128 бит, что в четыре раза превышает размер адреса в IPv4. 128-битный адрес IPv6 делится на части по 16 бит, которые в свою очередь преобразуются в 4-значные шестнадцатеричные числа и разделяются двоеточиями. Форма такой записи получила название двухточечно-шестнадцатеричной.
Пример IPv6 адреса: 21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A
Существует несколько способов сокращения записи IPv6 адресов, первый из них заключается в удалении начальных нулей в каждом 16-битном блоке. Поскольку в каждом блоке должен остаться хотя бы один знак, адрес приобретет вид: 21DA:D3:0:2F3B:2AA:FF:FE28:9C5A
Второй вариант заключается в замещении одного блока или группы последовательных блоков состоящих из нолей на двойное двоеточие, например адрес 21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A можно превратить в 21DA:D3::2F3B:2AA:FF:FE28:9C5A убрав начальные ноли и заменив нулевой блок на ( :: ). Важно то, что в адресе может быть только одно двойное двоеточие, поэтому заменять следует либо какой то один разряд либо группу последовательных.
Хорошим примером служит сокращение адреса многоадресной рассылки FF02:0000:0000:0000:0000:0000:0000:0002, который после применения правила принял вид FF02::2.
Следующее изменение связанно с отсутствием такого понятие как маска подсети. IPv6 адрес делится на три части: Global Routing Prefix, идентификатор подсети и идентификатор интерфейса. Global Routing аналогичен идентификатору сети (Network ID) в IPv4 и присваивается провайдерам. Определяется он тремя первыми блоками.
Идентификатор подсети представлен четвертым блоком и по сути очень похож на идентификатор подсети (Subnet ID) в IPv4. Последняя часть идентификатор интерфейса (аналог Host ID в IPv4) определяет уникальный адрес хоста вашей сети. Существует несколько способов получения уникального 64-битноко идентификатора интерфейса, он может быть настроен вручную, определен DCHP сервером или получен путем преобразования MAC адреса сетевой карты. Вместо маски в IPv6 указывается префикс это количество бит, которые определяют часть блоков отвечающих за Global Routing. Пишется префикс через косую черту после самого адреса.
Если взять для примера IPv6 адрес: 2001:0f68:0000:0000:0000:0000:1986:69af/48
Поскольку префикс (/48) указывает на первые 48 бит, можно сделать вид, что 2001:0f68:0000 будет являться частью Global Routing. Следующее поле, 0000, указывает на идентификатор подсети. Ну и оставшиеся блоки 0000:0000:1986:69af это идентификатор интерфейса.
Рис. 1 Схема IPv6 Адреса (Global Unicast)
В IPv6 существует три различных типа адресов Unicast, Multicast и Anycast. C Unicast все просто, он определяет конкретный уникальный хост в сети. Multicast же идентифицирует группу хостов или интерфейсов, при отправке пакета на этот адрес, он доставляется на каждый хост группы. Anycast тоже объединяет несколько хостов, но имеет от Multicast существенное отличие, пакет посланный на Anycast адрес доставляется только ближайшему к отправителю участнику группы.
Еще одно существенное отличие заключается в появлении нового протокола «Neighbor Discovery», который призван заменить IPv4 широковещательные пакеты типа Address Resolution Protocol (ARP), ICMPv4 Router Discovery, and ICMPv4 Redirect на более эффективные Unicast и Multicast пакеты. Поскольку функции у «Neighbor Discovery» довольно много, их принято делить на «Host-Router Discovery функции» и «Host-Host Communication».
В первую группу попадает задача Router Discovery, как понятно по названию, это метод обнаружения хостом маршрутизаторов в своей локальной сети. Далее на ND весит задача определения префикса сети (Prefix discovery), который дает понять клиенту в какой сети он находится. Кроме этого с помощью ND клиент получает от маршрутизатора информацию о том как производится получения IP адреса (через DHCPv6 или через роутер) и дополнительный параметры такие как максимальный размер пакета (Parameter Discovery)
Задачи второй группы «Host-Host Communication» это разрешение имен, замена тех функции, которые в IPv4 выполнялись протоколом ARP (IP в MAC). А также определение доступности партнера по передачи данных и выявление нарушения уникальности IP адресов, т. е появления одинаковых IP.
Плюсов у ND довольно много, если резюмировать, то, во-первых, можно забыть о broadcasts пакетах, ибо разрешение имен идет через Multicast. Во-вторых, устройства, использующие маршрутизатор, в случае если он перестает быть достижим, обнаруживают это и автоматически переключается на другой (при наличии). Поскольку ND работает на сетевом уровне, это дает возможность аутентифицировать и шифровать средствами IPSec такие задачи, как разрешение имен или обнаружение адреса маршрутизатора. Ну и конечно автоконфигурация, несмотря на появление DHCPv6 значимость этой службы может оказаться под большим вопросом.
Несколькими абзацами выше, мы определились с типами IPv6 адресов, на одном из типов, а именно на Unicast следует остановиться подробней. Он бывает трех видов: global unicast, link local unicast и Unique Local Unicast. Теперь немного о каждом.
Global unicast эквивалентен «белому» IPv4 адресу, он маршрутизируется в интернете и доступен в IPv6 участке глобальной сети. Первые 48-бит адреса является уникальными по всему Интернету (Global Routing Prefix), а провайдер, используя следующие 16 бита (Идентификатор подсети) может создать до 65536 подсетей. Пример сокращения нолей был показан на Global unicast адресе.
Link local unicast – уникальный IP адрес, автоматически получаемый хостом вне зависимости от наличия в сети маршрутизаторов и DHCPv6 серверов. Генерируется адрес довольно просто. Глобальный префикс (Global Routing Prefix) изначально определен (fe80) и занимает лишь первые 10 битов адреса. Т. к. префикс стал короче (по сравнению с Global unicast адресом), то пространство, отведенное под идентификатор подсети, увеличилось с 16 битов до 54 битов. А поскольку адрес LLU создан только для локальной сети, то данные биты не используются и выражаются нолями. Оставшиеся 64 бита (идентификатор интерфейса) получаются путем несложного преобразования 48-битного MAC адреса компьютера.
Рис. 2 Схема IPv6 Адреса (Link Local)
Пример такого преобразования: Узел A имеет MAC-адрес Ethernet 00-AA-00-3F-2A-1C. Сначала этот адрес преобразуется в формат EUI-64 путем вставки разрядов FF-FE между третьим и четвертым байтами: 00-AA-00-FF-FE-3F-2A-1C. Затем инвертируется бит U/L (седьмой бит в первом байте). Первый байт в двоичной форме имеет вид 00000000. При инвертировании седьмого бита он принимает вид 00000010 (0x02). Конечный результат, 02-AA-00-FF-FE-3F-2A-1C, после преобразования в двоеточечно-шестнадцатеричную нотацию становится идентификатором интерфейса: 2AA:FF:FE3F:2A1C. Таким образом, сетевому адаптеру с MAC-адресом 00-AA-00-3F-2A-1C соответствует адрес локальной связи FE80::2AA:FF:FE3F:2A1C.
Одной из главных задач Link local unicast является поддержка работы протокола «Neighbor Discovery» и именно поэтому адрес конфигурируется в любом случае. Передача данных внутри локальной сети осуществляется с использованием Link local unicast даже при наличии сконфигурированного Global unicast адреса.
И наконец, Unique Local Unicast адреса идеологически напоминают IPv4 адреса из зарезервированных диапазонов (10. 0. 0. 0/8 или 192. 168. 0. 0/24), они также предназначены для работы в сетях, напрямую не связанных с интернетом. Global Routing Prefix определяется первыми 8 битами и уже изначально задан (FD00::/8). Следующие 40-бит формируют Global ID уникальный идентификатор, который представляет организацию. Он должен быть случайным, чтобы минимизировать возможность совпадения с другими организациями. Такая уникальность позволит осуществить объединение сетей и настроить маршрутизацию без их переконфигурирования. Еще 16-бит дают возможность создать 65,536 подсетей и настроить маршрутизацию для внутреннего использования. Ну и наконец, последние 64 бита отданы под уже знакомый идентификатор интерфейса.
Рис. 3 Схема IPv6 Адреса (Unique Local Unicast)
Одна из задач разработчиков протокола IPv6 состояла в автоконфигурировании интерфейсов. Важно понимать, что один интерфейс может иметь множество различных адресов IPv6. (В принципе и при IPv4 интерфейс может иметь несколько адресов) Таким образом, интерфейс может одновременно иметь Link local и Global IPv6 адреса.
Процесс автоконфигурации начинается с получения Link local адреса, проверки его уникальности и определение того, какая информация должна быть получена автоматически (адреса, дополнительные параметры или и то и другое). В случае, если надо автоматически получить адрес, то через какой механизм он должен быть сконфигурирован: stateless или stateful.
Механизм stateless требует минимального конфигурирования маршрутизатора, при этом дополнительные сервера не нужны. При stateless механизме хост генерирует собственный адрес из локальной информации (MAC-адрес) и информации предоставленной маршрутизатором. Маршрутизатор объявляет префикс идентифицирующий подсеть, а хост использует уникальный идентификатор интерфейса.
Соединив их вместе хост получает адрес IPv6. В отсутствии маршрутизатора хост может сформировать только Link local адрес. Однако даже такой адрес дает ему возможность работать с машинами находящимися в его подсети.
Автоконфигурирование по механизму stateful производится с помощью DHCPv6. В случае stateful, хост получает адрес интерфейса и/или другую информацию с сервера ( адреса DNS, как вариант). Администратор сети может определить какой способ будет использоваться при помощи специальных ICMPv6 сообщений «Router Advertisement messages». Механизмы Stateless и stateful могут дополнять друг друга и использоваться совместно.
Stateless может использоваться когда точные адреса непринципиальны, stateful, наоборот, когда требуется выдача конкретных адресов конкретным хостам.
Адрес IPv6 выдаётся на фиксированное (либо бесконечное) время. Каждый адрес привязан к интерфейсу в течении времени жизни. По истечению времени жизни, адрес теряет связь с интерфейсом и может быть присвоен другому хосту в Интернете. Чтобы избежать возможных проблем, время жизни адреса делится на две стадии: «preferred» - использование адреса предпочтительно и «deprecated» — адрес, который вскоре будет утрачен. Новые соединения должны использовать адрес в состоянии «preferred». Адрес «deprecated» могут использоваться только приложениями, которые уже используют его и пока не могут переключиться на новый адрес. Для решения проблем с уникальностью IPv6 адресов существует специальный механизм Duplicate Address Detection. Маршрутизаторы также имеют Link Local адрес, полученный аналогичным образом.
Поскольку осуществить IPv4 – IPv6 переход в короткий срок задача неосуществимая, было разработано несколько технологий взаимодействия в смешанных средах. На текущий момент это: туннелирование, двойной стек и трансляция протоколов.
Суть туннелирования состоит в том, что пакет данных IPv6 инкапсулируется в данные пакета IPv4. Такой пакет IPv4 содержит в себе два заголовка IPv6 и IPv4, что в свою очередь позволяет передаваться его через обычные IPv4-сети. Он доставляется к узлу декапсуляции, где производится отбрасывание заголовка IPv4 и передача данных к IPv6 устройству. В зависимости от того, где происходит инкапсуляция и декапсуляция, выделяют следующие виды туннелирования. Существует три вида туннелирования: "Маршрутизатор – Маршрутизатор", "Хост – Маршрутизатор","Маршрутизатор – Хост".
Реализация двойного стека подразумевает поддержку устройством одновременно протоколов IPv6 и IPv4. Первая поддержка двойного стека появилась в Windows XP и Windows Server 2003 где администраторы могли дополнительно установить компонент протокола IPv6.
И последний вариант – трансляция протокола. Сама трансляция не что иное, как согласование двух протоколов путем преобразования сообщений, поступающих от одной сети, в формат другой сети. Один из вариантов заключается в использовании протокол-шлюзов, размещенных на границах между IPv6-сетями и IPv4-сетями.
Пару лет назад, после публикации предварительного RFC согласно которому переход на IPv6 должен завершиться до 2011 года, на одном из форумов был, проведет опрос. Системным администраторам было задано два вопроса: планируют ли они переход на IPv6 и как они к нему относятся. Самыми популярными ответами стали: «Я еще не размышлял на эту тему» и «IPv6 - это неизбежное зло, с которым придется мириться». Результаты очень хорошо отражали развитие IPv6 в России. Несмотря на то, что с того момента прошло около двух лет ситуация кардинально не изменилась. Если верить сайту ipv6. ru на сегодняшний день по количеству выделенных блоков IPv6-адресов Россия занимает 19-е место в Европе и 29-е место в мире. Посмотрев за пределы России, можно увидеть отсутствие поддержки IPv6 на большинстве популярных ресурсов, что явно не ускорит переход. Впереди планеты всей находится Япония, где IPv6 действительно развит, во многом этому развитию способствовало количество устройств и сервисов, используемых в стране. Не обошлось и без государственной поддержки, в виде налоговых льгот для компаний, использующих IPv6. В любом случае набором минимальных IPv6 знаний системный администратор должен обладать, дабы не впадать в ступор при виде результат ipconfig в Windows 7.
источник http://megait. su/articles/3/