Формат пакетов IPv6

Пакет в IPv6 включает стандартный заголовок, произвольное число дополнительных (необязательных) заголовков, а также "полезную нагрузку" — заголовки и данные протоколов более высоких уровней.

Спецификации IPv6 (см. [15]) применительно к форматам пакетов определяют три принципиально важных новых аспекта:

  • порядок заголовков;
  • формат стандартного заголовка IPv6;
  • форматы дополнительных заголовков.

Порядок заголовков

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

  • стандартный заголовок IPv6;
  • дополнительный заголовок, обрабатываемый всеми системами, в том числе промежуточными (маршрутизаторами);
  • дополнительные заголовки, обрабатываемые оконечными системами (хостами).

Описанная структура пакетов IPv6 изображена на Рис. 2.

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

В свою очередь, порядок дополнительных заголовков, обрабатываемых оконечными системами, рекомендуется делать следующим (часть заголовков может отсутствовать):

  • опции оконечной системы-1;
  • данные об исходящей маршрутизации;
  • данные о фрагментации;
  • аутентификационный заголовок;
  • шифровальный заголовок;
  • опции оконечной системы-2.

В IPv4 суммарная длина дополнительных заголовков не могла превышать 40 байт. В IPv6 это ограничение снято, дополнительные заголовки могут быть сколь угодно длинными (в пределах максимального размера пакета, разумеется) и сложными. Тем самым в IPv6 изначально заложены достаточно мощные и гибкие средства расширения.

Обратим внимание на то, что в IPv6 пакеты не могут фрагментироваться и собираться маршрутизаторами. Отправитель должен заранее выяснить максимальный размер пакетов (Maximum Transmission Unit, MTU), поддерживаемый на всем пути до получателя, и, при необходимости, выполнить фрагментацию своими силами. (Оговаривается, что MTU не может быть меньше 576 байт; вероятно, в последующих версиях спецификаций IPv6 это значение возрастет до 1500 байт.) Снятие с маршрутизаторов забот о фрагментации также способствует повышению эффективности их работы, хотя и усложняет в определенной степени жизнь оконечным системам.

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

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

  • Version — номер версии IP-протокола (6);
  • Prio. — приоритет пакета;
  • Flow Label — метка IP-потока. Вопросы поддержки классов обслуживания в IPv6 будут рассмотрены ниже, в Разд. Поддержка классов обслуживания .
  • Payload Length — длина содержимого, то есть того, что следует в пакете за заголовком IPv6 (дополнительные заголовки сетевого уровня, заголовки и данные протоколов более высокого уровня);
  • Next Header — номер (тип) следующего заголовка (дополнительного заголовка IP-уровня или заголовка транспортного уровня);
  • Hop Limit — максимальное число промежуточных систем на пути следования пакета. Уменьшается каждым маршрутизатором на 1. Если Hop Limit становится равным 0, пакет ликвидируется;
  • Source Address — 128-битный исходный адрес;
  • Destination Address — 128-битный целевой адрес.

Целесообразно сравнить заголовки IPv6 и IPv4 (см. Рис. 1). В IPv6 заголовок стал проще, он имеет фиксированную длину (40 байт). Хотя размер IP-адреса увеличился вчетверо (с 32 до 128 бит), длина заголовка возросла лишь вдвое.

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

Еще одна группа полей перекочевала в дополнительные заголовки. Имеется в виду все, что связано с фрагментацией, а также опции, следующие в пакете IPv4 за адресами.

Поля времени жизни пакета (Time to Live) и протокола (Protocol) в общем и целом лишь сменили названия, соответственно, на Hop Limit и Next Header, с некоторым уточнением (и обобщением) трактовки.

Однобайтное поле Type of Service расширилось в IPv6 до двух полей, Prio. и Flow Label, с суммарным размером 4 байта и гораздо более богатой семантикой.

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

Дополнительные заголовки IPv6

Дополнительные заголовки используются в IPv6 для поддержки механизмов безопасности, фрагментации, сетевого управления и т.п. Их общее количество и внутренняя сложность практически не ограничены. Мы рассмотрим наиболее важные дополнительные заголовки из числа стандартизованных.

Наиболее общий формат имеет дополнительный заголовок, обрабатываемый маршрутизаторами (см. Рис. 4). (Отметим, что такой заголовок не может входить в пакет более одного раза, он должен непосредственно следовать за стандартным заголовком IPv6, поле Next Header в котором равно 0.) Полям этого заголовка приписан следующий смысл:

  • Next Header — номер (тип) следующего заголовка (дополнительного заголовка IP-уровня или заголовка транспортного уровня);
  • Hdr Ext Len — длина дополнительного заголовка, причем единицей измерения служат 64-битные слова;
  • Options — содержимое дополнительного заголовка.

В свою очередь, поле Options состоит из произвольного числа опций, задаваемых тройками "тип-длина-значение" (см. Рис. 5).

Дополнительный заголовок, обрабатываемый маршрутизаторами, может использоваться, например, для резервирования ресурсов по протоколу RSVP перед прохождением IP-потока, чувствительного к качеству обслуживания. Еще одно применение — передача так называемых "джумбограмм", то есть IP-пакетов с длиной более 64 КБ. Способ представления соответствующей опции показан на Рис. 6.

Длина джумбограммы задается 32-битным целым (поле Payload Length в стандартном заголовке IPv6 должно быть нулевым), то есть с практической точки зрения может быть сколь угодно большой.

Столь же общий формат имеет дополнительный заголовок исходящей маршрутизации. Здесь источник задает список узлов сети, через которые должен пройти пакет (в зависимости от режима маршрутизации разрешается или запрещается проход через дополнительные узлы, не указанные в списке). Исходящая маршрутизация, применяемая для детального контроля над трафиком, в данном контексте интересна тем, что в поле Destination Address стандартного заголовка IPv6 каждый раз устанавливается адрес очередного элемента списка, так что по пути следования это поле меняется.

Дополнительный заголовок "опции оконечной системы-1" обрабатывается по прибытии в узел сети, заданный полем Destination Address, даже если это на самом деле не есть конечный пункт. Из соображений эффективности дополнительные заголовки исходящей маршрутизации и "опции оконечной системы-1" располагают ближе к началу пакета. Заголовок "опции оконечной системы-2" обрабатывается только в конечном пункте маршрута, поэтому его помещают в конце списка заголовков. Спецификации IPv6 пока не связывают с опциями оконечной системы каких-либо содержательных действий.

В IPv6 оставлены средства для фрагментации больших пакетов (чья длина превосходит MTU для пути следования), но эта возможность выглядит как отмирающая. Во-первых, пользоваться ею не рекомендуется, что следует учитывать при реализации верхних уровней стека TCP/IP. Во-вторых, поддержка фрагментации возложена на оконечные системы; маршрутизаторы освобождены от нее. В остальном представление фрагментированных пакетов осталось вполне традиционным.

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


Идеи, положенные в основу нового поколения протоколов Содержание Адресация в IPv6