воскресенье, 5 июня 2011 г.

Описание модели адресации в протоколе IPv6


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

В IPv6, в отличие от IPv4, используется другое представление адресов. Теперь, вместо восьмеричной системы исчисления, используется шестнадцатеричная. Таким образом, адрес в IPv6 представляет собой восемь 16-битовых чисел, разделенных двоеточиями. Правда, в данный момент достаточно часто используется альтернативное представление. В нем присутствуют шесть 16-битовых чисел, разделенных двоеточиями и четыре 8-битовых, разделенных точками (представление адреса в IPv4). Появилась такая запись для удобства при работе одновременно с обеими версиями протокола. Кроме того, в адресах IPv6 очень часто используются длинные последовательности нулей. Поэтому, чтобы сделать запись более удобной, допускается замена 16 следующих друг за другом нулевых бит на символы "::". То есть обычный адрес в IPv6 будет выглядеть так: FF80:0000:0000:0000:0008:0000:100A:328B. А сокращенный так: FF80::::0008::100A:328B.

В IPv6 все адреса делятся на две большие группы: индивидуальные (unicast) и групповые (multicast). Разница между ними понятна из их названий. Адреса, относящиеся к первой группе, идентифицируют какой-то один определенный сетевой интерфейс. Ну а остальные используются для отправки информации сразу же нескольким получателям. Кроме того, в спецификациях протокола присутствуют еще и адреса, определяемые как "наиболее подходящий член группы" (anycast). Они определяют ближайший (в соответствии с мерой, определенной протоколом маршрутизации) интерфейс из указанной группы. Правда, на данный момент anycast-адреса могут присваиваться только маршрутизаторам. Но работа в этом направлении продолжается. И действительно, anycast-адреса очень перспективны. С их помощью можно будет легко и просто создать, например, распределенный веб-сервер, разбросанный по разным концам земного шара, при обращении к которому для каждого пользователя будет автоматически выбираться ближайший ПК. Ну а теперь давайте остановимся на разных группах IP-адресов подробнее.

Индивидуальные адреса

Тип адреса в протоколе IPv6 определяется префиксом переменной длины, который размещается в самом начале. Для примера давайте разберем общий случай обычного глобального индивидуального адреса. Он состоит из шести полей, следующих друг за другом (RFC 2373).

  • FP (3 бита) - форматный префикс данного типа адресов, его значение равно 001;
  • TLA ID (13 бит) - идентификатор агрегации верхнего уровня;
  • RES (8 бит) - зарезервированное поле;
  • NLA ID (24 бита) - идентификатор агрегации следующего уровня;
  • SLA ID (16 бит) - идентификатор агрегации уровня производственной площадки;
  • Interface ID (64 бита) - идентификатор сетевого интерфейса.

Если вглядеться в эту структуру, то становится ясно, что она иерархическая. Идентификатор агрегации TLA ID используется маршрутизаторами крупнейших провайдеров и точек обмена трафиком для отправки их в определенную "подсеть". Поле RES предназначено для увеличения других полей в случае возникновения в будущем такой необходимости. Идентификатор агрегации NLA ID предназначен для маршрутизаторов "подсетей". Ну и, наконец, значение SLA ID используется для сетей отдельных организаций (корпоративных сетей, провайдеров и т.п.). Таким образом, на каждом из уровней маршрутизаторы обрабатывают не весь адрес целиком, а только его часть, предназначенную именно для них. А поэтому размеры таблиц маршрутизации существенно уменьшаются, а скорость их обработки увеличивается.

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

Немногим сложнее и те адреса, которые будут присваиваться узлам, поддерживающим только протокол IPv4. Естественно, их существование не продлится долго, однако на этот промежуток времени необходим какой-то выход из положения. Им стали адреса следующего вида: 80 нулевых бит и 16 единичных, за которыми следует значение согласно стандарту IPv4.

В стандарте IPv6 предусмотрено два вида локальных адресов. Они используются для внутреннего взаимодействия узлов в пределах одной физической сети или группы сетей, принадлежащих одной организации, и проведения автоматического конфигурирования. В первом случае адрес выглядит следующим образом: 10-битный префикс (1111111010), 54 нулевых бита и идентификатор сетевого интерфейса (64 бита). Во втором случае структура адреса несколько сложнее. Сначала идет 10-битный префикс (1111111011), затем 38 нулевых бит, 16-битовый индентификатор подсети и 64-битовый идентификатор сетевого интерфейса.

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

Групповые адреса

Первые восемь бит в любом групповом адресе имеют значение 1. Это и есть префикс, по которому маршрутизаторы и другие узлы Интернета отделяют их от индивидуальных. Следом идут четыре бита, называемые флагами. Первые три из них в данный момент не используются, они зарезервированы на будущее. Последний называется флагом Т. Если этот бит нулевой, то это обозначает, что адрес является стандартным (well-known) групповым, официально выделенным для глобального использования в Интернете. Если же T равен 1, то это указывает на временный (transient) адрес.

Следующие четыре бита группового адреса представляют собой поле Scop. Оно задает область действия данного адреса. На данный момент в стандарте зафиксировано пять значений, остальные же зарезервированы на будущее:
  • 1 - группа локальна в пределах узла сети;
  • 2 - группа локальна в пределах физической (под)сети;
  • 5 - группа локальна в пределах производственной площадки;
  • 8 - группа локальна в пределах организации;
  • 14 - группа является глобальной.

Ну и, наконец, оставшиеся 112 бит являются идентификатором группы. А для примера давайте приведем адрес для группы с идентификатором 0000XXX. Полная запись для всех узлов, входящих в эту группу и расположенных в пределах одной сети будет выглядеть так: FF02:0000:0000:0000:0000:0000:0000:XXX (краткая запись: FF02:::::::XXX). Ну а адрес для всей группы будет выглядеть так: FF0E:0000:0000:0000:0000:0000:0000:XXX (FF0E:::::::XXX).

Отдельного упоминания заслуживают широковещательные адреса. Так, например, обращение ко всем узлам будет выглядеть следующим образом: FFXX:0000:0000:0000:0000:0000:0000:0001, где вместо XX необходимо установить нужное значение поля Scope, определяющее область выборки. Адрес для всех маршрутизаторов записывается так: FFXX:0000:0000:0000:0000:0000:0000:0002.

Комментариев нет:

Отправить комментарий