Страница 1 из 1

Протокол межсетевых взаимодействий IPv6

Добавлено: 10 авг 2010, 11:57
Raven
Адресация в IPv6

Увеличение адреса с 32 бит до 128 по логике увеличит и таблицы маршрутизации. Чтобы такого не произошло, надо строить иерархическую систему адресации (чем и намерена заниматься IANA). Примером такой системы может служить наша телефонная система, где по коду страны, города и затем линии АТС можно проследить маршрут до абонента.
Итак, как устроен IP-адрес в IPv6. Он может быть представлен в трёх формах:

1) Основная форма: x:x:x:x:x:x:x:x
Здесь x - это шестнадцатеричное 16-битное число (т.е. имеющее в себе максимум 4 символа в шестнадцатеричной системе).
Примеры: fabc:de12:3456:7890:ABCD:EF98:7654:3210
108b:0:0:0:8:800:200C:417A

2) Сжатая форма.
Здесь, для уменьшения длинны адреса, в котором присутствует несколько групп, содержащих в себе только нулевые биты, применяется сокращение "::" - оно означает, что на его месте находится какое-то количество групп с нулевыми битами. Выглядеть этот тип записи будет следующим образом:
Примеры:
(1 форма) 108b:0:0:0:8:800:200C:417A
(2 форма) 108b::8:800:200C:417A
_______________________
(1 форма) ff01:0:0:0:0:0:0:43
(2 форма) ff01::43
_______________________
(1 форма) 451a:0000:0000:0000:e63d:0000:0000:8264
(2 форма) 451a::e63d:0:0:8264.
_______________________
Хороший пример - адрес обратной связи:
(1 форма) 0:0:0:0:0:0:0:1
(2 форма) ::1

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


3) Альтернативная форма.
Очевидно, что переход на IPv6 будет плавным: одновременно перевести на новую инфраструктуру все подключённые к Сети устройства невозможно (куда проще было в своё время перейти на IPv4). Специально для «смутного времени» в IPv6 предусмотрено два типа «переходных» адресов. Первые выдаются узлам, ответственным за туннелирование трафика между IPv6 и IPv4, и состоят из 96 нулевых бит и привычного адреса IPv4. Вторые предназначены узлам, которые не поддерживают новую систему адресации: 80 нулевых бит плюс 16 единичных бит, а потом — адрес IPv4(RFC 2373).
Пример:
0:0:0:0:0:0:13.1.68.3
0:0:0:0:0:FFFF:129.144.52.38

или в сжатом виде:

::13.1.68.3
::FFFF:129.144.52.38

В IPv6 существуют следующие типы адресов: unicast, anycast и multicast. Адреса ведут не к узлу, а к интерфейсу этого узла, потому, что каждый интерфейс принадлежит только одному узлу.
IPv6 уникастный адрес соотносится только с одним интерфейсом. Одному интерфейсу могут соответствовать много IPv6 адресов различного типа (уникастные, эникастные и мультикстные). Существует два исключения из этого правила:
  • 1. Одиночный адрес может приписываться нескольким физическим интерфейсам, если приложение рассматривает эти несколько интерфейсов как единое целое при представлении его на уровне Интернет.
    2. Маршрутизаторы могут иметь ненумерованные интерфейсы (например, интерфейсу не присваивается никакого IPv6 адреса) для соединений точка-точка, чтобы исключить необходимость вручную конфигурировать и объявлять (advertise) эти адреса. Адреса не нужны для соединений точка-точка маршрутизаторов, если эти интерфейсы не используются в качестве точки отправления или назначения при посылке IPv6 дейтаграмм. Маршрутизация здесь осуществляется по схеме близкой к используемой протоколом CIDR в IPv4.
IPv6 соответствует модели IPv4, где субсеть ассоциируется с каналом. Одному каналу могут соответствовать несколько субсетей.

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

Синтаксис уникастного адреса обычно содержит префикс, указание области сети (ID области), ID субсети, прочие указатели маршрута и на конце ID интерфейса, которым считается уникальный IEEE-802 MAC адрес.

Эникастные адреса входят в состав уникастного пространства и синтаксически неотличимы от уникастных. Такой адрес не может являться адресом ЭВМ. Он может быть только адресом маршрутизатора и не может быть указан в поле "адрес отправителя".
Синтаксически такой адрес состоит их префикса субсети и остатка из нулевых бит, т.е. он идентичен уникаст адресу интерфейса с нулевым идентификатором. Пакеты, посланные по такому адресу, придут ко всем маршрутизаторам сети, но реально работа будет осуществляться с тем, который первым пришлёт ответ.

Мультикастные адреса IPv6 имеют следующую структуру:

Код: Выделить всё

 8 Бит     4 Бита     4 Бита     112 Бит
11111111	Flags	Scope	Идентификатор группы
В поле Flags 3 старших бита зарезервированы, а последний (T) означает:
T = 0 указывает на то, что адрес является стандартным ("well-known") мультикастным, официально выделенным для глобального использования в Интернет.
T = 1 указывает, что данный мультикастинг-адрес присвоен временно ("transient").

Поле Scope представляет собой 4-битовый код мультикастинга, предназначенный для определения предельной области действия мультикастинг-группы. Допустимые значения:
0 зарезервировано
1 Область действия ограничена локальным узлом
2 Область действия ограничена локальным каналом
3 (не определено)
4 (не определено)
5 Область действия ограничена локальной сетью
6 (не определено)
7 (не определено)
8 Область действия ограничена локальной организацией
9 (не определено)
A (не определено)
B (не определено)
C (не определено)
D (не определено)
E глобальные пределы (global scope)
F зарезервировано
Приведенные ниже мультикаст-адреса являются зарезервированными (предопределенными):
FF00:0:0:0:0:0:0:0
FF01:0:0:0:0:0:0:0
FF02:0:0:0:0:0:0:0
FF03:0:0:0:0:0:0:0
FF04:0:0:0:0:0:0:0
FF05:0:0:0:0:0:0:0
FF06:0:0:0:0:0:0:0
FF07:0:0:0:0:0:0:0
FF08:0:0:0:0:0:0:0
FF09:0:0:0:0:0:0:0
FF0A:0:0:0:0:0:0:0
FF0B:0:0:0:0:0:0:0
FF0C:0:0:0:0:0:0:0
FF0D:0:0:0:0:0:0:0
FF0E:0:0:0:0:0:0:0
FF0F:0:0:0:0:0:0:0
Перечисленные выше мультикаст-адреса зарезервированы и не будут присваиваться каким-либо мультикаст-группам.

Адреса для обращения ко всем узлам:
FF01:0:0:0:0:0:0:1
FF02:0:0:0:0:0:0:1
Приведённые выше адреса идентифицируют группу, включающую в себя все IPv6 узлы в пределах группы 1 (локальные узлы) или 2 (локально связанные узлы).

Адреса всех маршрутизаторов:
FF01:0:0:0:0:0:0:2
FF02:0:0:0:0:0:0:2
Приведённые выше мультикаст-адреса идентифицируют группу всех IPv6 маршрутизаторов в пределах области 1 (локальные узлы) или 2 (связанные локально узлы).
DHCP server/relay-agent: FF02:0:0:0:0:0:0:C
Приведённые выше мультикастинг-адреса идентифицируют группу всех IPv6 DHCP серверов и транзитных агентов в пределах области (scope) 2 (локальный канал).

Адрес активного узла (solicited-node): FF02:0:0:0:0:1:xxxx:xxxx

Приведённый выше мультикаст-адрес вычислен как функция уникастного и эникастного адресов узла. Мультикаст-адрес активного узла (solicited-node) сформирован из младших 32 бит адреса (уникастного или эникастного) добавлением 96 битного префикса FF02:0:0:0:0:1. В результате получен мультикастинг адрес, охватывающий интервал:

FF02:0:0:0:0:1:0000:0000
до
FF02:0:0:0:0:1:FFFF:FFFF

Например, код мультикаст-адреса активного узла (solicited node), соответствующий IPv6 адресу 4037::01:800:200E:8C6C, равен FF02::1:200E:8C6C. IPv6 адреса, которые отличаются только старшими разрядами, например, из-за множественных старших префиксов, соответствующих разным провайдерам, будут совпадать с адресом активного узла, что сокращает число мультикаст-групп, к которым узел должен присоединиться.

Основано на материале Семенова Ю.А. (ГНЦ ИТЭФ) - "Адресация IPv6" http://book.itep.ru

Re: Протокол межсетевых взаимодействий IPv6

Добавлено: 10 авг 2010, 16:11
Raven
IPv6 и система доменных имен

IPv6-адреса представлены в системе доменных имен в виде АААА-записей (так называемых 4А-записей) для поиска вперед; для обратного поиска используется ip6 .arpa (ранее ip6 .int) с помощью отсечения адреса. Эта схема является простой адаптацией А-записей и in-addr.arpa схемы, определенной в RFC 3596.

АААА-схема была предложена одной из первых во время разработки архитектуры IPv6. Другое предложение, содержало идею A6-записей для поиска вперед и ряд других нововведений, таких, как bit-string labels и DNAME-записи. Оно представлено в экспериментальном RFC 2874 и ссылается (с последующими обсуждение преимуществ и недостатков обеих систем) на RFC 3364.
AAAA-записьNAME доменное имя

Код: Выделить всё

TYPE	AAAA (28)
CLASS	Internet (1)
TTL	Time to live в секундах
RDLENGTH	длина поля RDATA 
RDATA	строковое представление IPv6-адреса, определенное в RFC 3513

RFC 3484 определяет, каким образом следует приложениям выбирать IPv6 или IPv4-адрес для использования, в том числе это касается адресов, извлеченных из DNS.

IPv6 и DNS RFC
  • RFC 2874 - DNS Extensions to Support IPv6 Address Aggregation and Renumbering - Defines the A6 record
  • RFC 3364 - Tradeoffs in Domain Name System (DNS) Support for Internet Protocol version 6 (IPv6)
  • RFC 3484 - Default Address Selection for Internet Protocol version 6 (IPv6)
  • RFC 3513 - Internet Protocol Version 6 (IPv6) Addressing Architecture
  • RFC 3596 - DNS Extensions to Support IP Version 6 - Defines the AAAA record and obsoletes RFC 1886 and RFC 3152

Re: Протокол межсетевых взаимодействий IPv6

Добавлено: 10 авг 2010, 16:14
Raven
Специальные адреса

Есть ряд адресов, которые имеют особое значение в IPv6:

Локальные адреса:
  • ::/128 - адрес со всеми нулями является неопределенным адресом, и будет использоваться только в программном обеспечении.
  • ::1/128 – адрес внутренней петли («loopback») localhost. Если узел посылает пакеты на этот адрес, IPv6 стек циклично возвращает эти пакеты обратно тому же узлу (соответствует 127.0.0.1 в IPv4).
  • fe80::/10 - локальный префикс, указывает, что адрес является действительным только внутри местной физической сети. Это аналог автоконфигурации IP адреса 169.254.0.0/16 в IPv4.
Местные адреса:
  • fc00::/7 - уникальные локальные адреса (unique local addresses, ULA) являются маршрутизируемыми только в рамках набора взаимодействующих сайтов. Они были определены в RFC 4193 в качестве замены для локальных адресов. Адреса включает 40-битное псевдослучайне число, что позволяет свести к минимуму риск конфликтов при объединении сайтов и потерь пакетов.
IPv4
  • ::ffff:0:0/96 - это префикс используется для подключаемых адресов IPv4.
  • 2001::/32 - используется для Teredo-туннелей.
  • 2002::/16 - это префикс используется для 6to4-адресации.
Групповые:
  • ff00::/8 - многоадресный префикс используется широковещания, как это определено в " IP Version 6 Addressing Architecture" (RFC 4291).
Используемые в примерах, не рекомендуюмые или устаревшие:
  • ::/96 - нулевой префикс, используется для IPv4-совместимых адресов, но в настоящее время устарел.
  • 2001:db8::/32 - это префикс используется в документации (RFC 3849). Везде, где приводятся примеры IPv6-адресов, следует использовать адреса этого диапазона.
  • fec0::/10 - местный префикс, указывает, что адрес является действительным только внутри сети организации. Не используется с сентябре 2004 года (RFC 3879) и системы не должны поддерживать этот особый тип адреса.

ORCHID:
  • 2001:10::/28 – относится к ORCHID (Overlay Routable Cryptographic Hash Identifiers) согласно (RFC 4843). Это немаршрутизируемые IPv6-адреса, используемые для криптографических хэш-идентификаторов.

Re: Протокол межсетевых взаимодействий IPv6

Добавлено: 10 авг 2010, 16:17
Raven
IPv6-пакеты и индексы зон

IPv6-пакет, состоит из двух основных частей: заголовка и "полезной нагрузки".

Заголовок находится в первых 40 октетах (320 бит) в пакете и содержит поля:
  • Версия - версии IP (4 бита).
  • Класс трафика – приоритет пакета (8-бит). Существует два класса: где источник обеспечивает контроль и где источник не обеспечивает контроль трафика.
  • Метка потока – QoS-менеджмент (20 бит). Первоначально был создан для предоставления специальных сервисов в реальном времени, но в настоящее время не используется.
  • Длина полезной нагрузки - длина полезной нагрузки в байтах (16 бит). Если заполнена нулями, значит используется Jumbo payload.
  • Следующий заголовок - определяет следующий инкапсулированный протокол. Значения, совместимы с теми, что определенны для протокола IPv4 (8 бит).
  • Лимит скачков - заменяет поле time to live в IPv4 (8 бит).
  • Источник и адрес назначения - 128 бит каждый.

Полезная нагрузка может быть размером до 64 Kб в стандартном режиме, или большего размера в Jumbo payload режиме.

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

Поле "Протокол" из IPv4 заменяется на поле "Следующий заголовок". Это поле, как правило, определяет уровень транспортного протокола, используемого в "полезной нагрузке".

Так же это поле может задавать дополнительные заголовки, которые следуют за основными.


Индексы зоны


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

Например, хост имеет два интерфейса, которые автоматически получают локальные адреса: fe80::1/64 и fe80::2/64, только один из которых подключен к той же физической сети в качестве принимающей стороны, которая имеет адрес fe80::3/64. Если хост попытается связаться с fe80::3 как он узнает, какой интерфейс (fe80::1 или fe80: 2) следует использовать?

Решение определено в RFC 4007 и представляет собой добавление уникальных индексов зоны для местных интерфейсов. Текстуально оно может представлено в виде <address>%<zone_id>, например: http://[fe80::1122:33ff:fe11:2233%eth0]:80/. Однако это вызывает новые проблемы из-за похожести на %-кодировку URI.
  • Microsoft Windows IPv6-стек использует цифровые идентификаторы зоны: fe80::3%1
  • BSD-приложения, как правило, используют имя интерфейса в качестве зоны: fe80::3%pcn0
  • Linux-приложения, как правило, тоже используют имя интерфейса в качестве зоны ID: fe80:: 3%eth0, хотя GNU/Linux утилиты конфигурации сетевого интерфейса, такие как ifconfig и iproute2, не показывают индексы зоны.
Только относительно небольшое число IPv6-приложений, способных понять синтаксис адреса с индексом зоны, в результате чего использование локальных адресов сильно ограничено.