Мельников Д. А. - Организация и обеспечение безопасности информационно-технологических сетей и систем - 2012
.pdf172 |
Глава 12. Протокол IP шестой версии |
Нефрагментируемая часть включает 1Ру6-заголовок и любые другие заголовки расширения, которые должны обрабатываться 1Ру6-узлами, расположенными на маршруте следования до конеч ного узла/получателя, то есть все перечисленные выше заголовки, включая также заголовок расширения «Маршрутизация», если он представлен, либо заголовок «Дополнительные функции: ретранс ляция», если он представлен. Фрагментируемая часть включает ос тавшуюся последовательность 1Ру6-пакета, то есть любые заголовки расширения, которые должны обрабатываться только конечным 1Ру6-узлом/получателем, заголовок вышележащего уровня Internetархитектуры и транслируемые данные.
Фрагментируемая часть оригинального 1Ру6-пакета разбивает ся на фрагменты, каждый из которых имеет длину, равную целому числу 8-октетных последовательностей, за исключением, может быть, последнего фрагмента («крайний правый»). Фрагменты пере даются последовательно друг за другом с помощью фрагментальных 1Ру6-пакет (рис. 12.21).
Каждый фрагментальный пакет состоит из:
онефрагментируемой части оригинального 1Ру6-пакета с полем «Размер поля полезной нагрузки» из оригинального IPv6заголовка, в котором отбрасывается значение поля полезной нагрузки из оригинального заголовка и включается размер по ля полезной нагрузки только данного фрагментального паке та. Кроме этого, значение в поле «Идентификатор следующего заголовка расширения» последнего заголовка расширения из нефрагментируемой части оригинального 1Ру6-пакета заменя ется значением «44»;
озаголовка расширения «Фрагментация», включающего:
-поле «Идентификатор следующего заголовка расширения», значение в котором указывает на первый заголовок фраг ментируемой части оригинального 1Ру6-пакета;
-поле «Смещение (сдвиг) данного фрагмента» («Fragment Offset») - длина (в 8-октетовых единицах) между началом фрагментируемой части исходного 1Ру6-пакета и началом данного фрагмента пакета (длина сдвига - Ль где к = О...п-l). Если имеет место первый фрагмент («крайний левый»), то данное поле заполняется нулями (см. рис. 12.21);
-поле «Флаг» («М flag»), содержащее значение «О», если дан ный фрагмент является последним («крайний правый»), или «1»- в противном случае;
-поле «Идентификация», содержащее идентификатор для данного оригинального 1Ру6-пакета;
раздел II. |
|
|
173 |
|
|
«п» фрагментов |
|
До |
Ai |
Дг |
Дп-1 |
Часть пакета, не подлежащая |
|
Второй фрагмент |
Последний фраг |
Первый фрагмент |
мент |
||
фрагментации |
|
|
|
Часть пакета, не подлежащая |
Заголовок расширения |
|
|
фрагментации |
«Фрагментация» |
Первый фрагмент |
|
|
|
||
Часть пакета, не подлежащая |
Заголовок расширения |
|
|
фрагментации |
«Фрагментация» |
Второй фрагмент |
|
|
... |
|
|
Часть пакета, не подлежащая |
Заголовок расширения |
|
|
фрагментации |
«Фрагментация» |
Последний фрагмент |
|
|
|
Рис. 12.21. Формат «оригинального пакета», разделенного
на фрагменты, и фрагментальные пакеты
о и собственно самого фрагмента оригинального 1Ру6-пакета. Размеры фрагментов должны выбираться таким образом, чтобы
размеры сформированных фрагментальных пакетов не превышали максимально допустимый размер передаваемой единицы данных для конкретного маршрута доставки до конечного 1Ру6-узла/получателя. В 1Ру6-узле/получателе осуществляется обработка принятых фраг ментальных пакетов и на их основе сборка оригинального пакета в нефрагментарном (исходном) формате (рис. 12.20).
Заголовок расширения «Дополнительные функции: узелполучатель». Данный заголовок используется для доставки дополни тельной информации, которая должна контролироваться только IPузлом/получателем 1Ру6-пакета. Заголовок расширения «Дополни тельные функции: узел-получатель» идентифицируется значением «60» в поле «Идентификатор следующего заголовка расширения» за головка расширения, непосредственно предшествующего ему. Формат заголовка расширения «Дополнительные функции: узел-получатель» представлен на рис. 12.22. и включает следующие поля:
«Идентификатор |
Длина поля «Данные |
следующего заголовка» |
дополнительной функции» |
Д а н н ы е д опо л ни тел ьн ой ф ункции - у зел -п о л уч ател ь
Рис.12.22. Формат заголовка «Дополнительные функции:
узел-получатель»
0«Идентификатор следующего заголовка расширения» («Next Header») - 8-битовый определитель, который идентифицирует
174 |
Глава 12. Протокол IP шестой версии |
тип заголовка расширения, следующего сразу за заголовком «Дополнительные функции: узел-получатель» (используемые значения представлены в стандарте RFC-1700);
о«Длина поля «Данные дополнительной функции: узелполучатель» («Hdr Ext Len») - 8-битовое беззнаковое целое число, которое определяет длину заголовка расширения «Данные до полнительной функции: узел-получатель» в 8-октетовых едини цах, за исключением первых восьми октетов;
в«Данные дополнительной функции: узел-получатель» («Opti ons») - поле переменной длины, в котором весь заголовок «До полнительные функции: узел-получатель» рассматривается как последовательность, состоящая из целого числа 8-октетных суб последовательностей.
Только в заголовке «Данные дополнительной функции: узелполучатель», представленном в этом стандарте, может использо ваться функция дополнения нулями двух типов «Padl» и «PadN».
Отсутствие следующего заголовка расширения. Значение «59» в поле «Идентификатор следующего заголовка» 1Ру6-заголовка или любого другого заголовка расширения указывает на то, что за этим заголовком ничего не следует (данный заголовок последний в этом пакете). Когда 1Ру6-пакет подлежит дальнейшей ретрансля ции, то данное поле содержит значение «59», а все финальные окте ты должны игнорироваться и передаваться без изменений.
12.11. Проблемы, связанные с выбором длины 1Руб-пакета
1Ру6-протокол требует, чтобы каждый Internet-канал имел MTU-параметр, равный 1280 октетам или больше. Если какая-либо линия связи не способна передавать 1280-октетные 1Ру6-пакеты це ликом, то тогда должен быть специальный протокол канального уровня (в Internet-архитектуре), который бы выполнял функции фрагментирования и сборки 1Ру6-пакетов.
Линии связи, в которых предусмотрена настройка MTUпараметра (например, РРР-протокол канального уровня, RFC-1661), должны устанавливать значение этого параметра, равное, по крайней мере, 1280 октетов. Тем не менее, существует рекомендация, чтобы значение MTU-параметра было равно 1500 октетов или больше с це лью реализации функции повторного обрамления пакета (туннелиро вание) без использования фрагментации пакета на сетевом (IP) уровне.
Если IP-узел подключен к нескольким линиям связи, то он дол жен быть способен обрабатывать поступившие пакеты, длина которых превышает канальный MTU-параметр. Стандарт RFC-1981 содержит
Раздел II. |
175 |
строгое требование: 1Ру6-узлы должны обеспечивать значение MTUпараметра более 1280 октетов. Однако, программный 1Ру6-модуль с минимальным набором функций (например, в загружаемом ПЗУ) мо жет запретить «самому себе» передачу пактов длиной не более чем 1280 октетов, и пренебречь требованием стандарта RFC-1981.
С целью передачи пакета длиной более чем 1280 октетов 1Ру6-узел может с помощью заголовка расширения «Фрагментация» фрагментировать пакет с последующей его сборкой у получателя(ей). Однако процедура фрагментирования является излишней для при кладного процесса, который способен управлять длиной своих сооб щений, и таким образом обеспечить необходимый MTU-параметр (т.е., «подгонять» длину к 1280 октетам).
1Ру6-узел должен быть способен фрагментировать пакет так, чтобы после его сборки, он имел длину 1500 октетов или больше. Наиболее предпочтительным для 1Ру6-узла является его способ ность фрагментировать пакеты, которые при их сборке превышали длину 1500 октетов.
Протокол более высокого уровня или прикладной процесс, за висимые от 1Ру6-фрагментирования при передаче пакетов длиной, превышающей установленный для канала связи MTU-параметр, не должны отправлять сообщения, которые требуют для их передачи формирование 1Ру6-пакетов длиной более 1500 октетов, до тех пор, пока не будет гарантии того, что узел/получатель способен соби рать пакеты большей длины.
Б ответ на переданный 1Ру4-узлу/получателю 1Ру6-пакет (т.е., пакет, который прошел процедуру преобразования из 1Ру6-фор- мата в 1Ру4-формат) 1Ру6-узел/отправитель может получить ICMPсообщение с кодом «Слишком большое сообщение» («Too Big mes sage»), указывающее, что на данном ретрансляционном участке было превышено допустимое значение MTU-параметра, состав ляющее менее 1280 октетов. В таком случае, 1Ру6-узлу/отправителю нет необходимости уменьшать размер последующих пакетов до значения менее 1280 октетов. Ему просто необходимо включить в эти пакеты заголовок расширения «Фрагментация» так, чтобы маршрутизатор, осуществляющий процедуру преобразования па кета из 1Ру6-формата в 1Ру4-формат, мог формировать подходящее значение идентификационного параметра для его использования 1Ру4-фрагментах. (.Примечание. Это означает, что размер поля по лезной нагрузки, возможно, придется уменьшить до 1232 октетов (1280 минус 40 для 1Ру6-заголовка и 8 для заголовка расширения «Фрагментация»), а может оно будет и менее 1232 октетов, если ис пользовать дополнительные заголовки расширения.)
176 |
Глава 12. Протокол IP шестой версии |
12.12. Маркеры потоков
20-битовое поле «Маркер потока» («Flow Label») в составе IPv6заголовка может использоваться отправителем для маркирования по следовательностей пакетов, которым требуется специальная обработка 1Ру6-маршрутизаторами, например, обработка в режиме «не по умол чанию» («non-default quality of service») или обслуживание в масштабе реального времени («real-time»). Серверы и маршрутизаторы, которые не поддерживают функцию маркирования потока, должны это поле заполнять нулями, когда пакет направляется на передачу в канал свя зи, передавать его дальше без изменений при ретрансляции пакета, и игнорировать при получении пакета.
12.13. Классы трафика
8-битовое поле «Класс трафика» в составе 1Ру6-заголовка может использоваться узлом/отправителем и/или узлом/ретранслятором (маршрутизатором) для идентификации и распознавания IPv6-na- кетов, с точки зрения их принадлежности к различным классам или по их приоритетам. В момент написания данного стандарта, проводилось несколько экспериментов по использованию специализированных би тов, определяющих «Тип обслуживания» и/или «Приоритет», для обеспечения различных форм дифференцированного обслуживания 1Ру4-пакетов, которые не использовали в явном виде маркеры потоков. Поле «Класс трафика» в составе 1Ру6-заголовка по своему функцио нальному предназначению аналогично полям «Тип обслуживания» и/ или «Приоритет» в 1Ру4-пакетах.
К использованию поля «Класс трафика» предъявляются сле дующие общие требования:
1)программный 1Ру6-модуль 1Ру6-узла должен иметь специали зированный прикладной интерфейс, через который приклад ной процесс будет указывать тип обслуживания формируемо го им трафика. Далее этот тип обслуживания будет указывать ся в поле «Класс трафика» 1Ру6-заголовка. В режиме «поумолчанию» это поле (все 8 бит) должно заполняться нулями;
2)1Ру6-узлы, функционально способные использовать несколько или все биты поля «Класс трафика», могут изменять значения этих битов поля в 1Ру6-пакетах, которые они передают, ретранслируют или получают, в соответствие со спецификой их применения. А тем 1Ру6-узлам, которые не способны ис пользовать поле «Класс трафика», рекомендуется игнориро вать это поле и оставлять его без изменений;
3)протокол верхнего уровня не должен в обязательном порядке сравнивать значения битов этого поля в принятом пакете с аналогичными битами в пакете, отправленном источником.
Раздел II. |
177 |
12.14. Проблемы протоколов верхних уровней
Проверочная сумма протоколов транспортного уровня. Лю бой транспортный или прикладной протоколы, которые включают адреса из IP-заголовка в последовательность данных для вычисления проверочной суммы должны быть модифицированы для «работы» с 1Ру6-протоколом, и «уметь» включать в обрабатываемую последова тельность 128-битовые 1Ру6-адреса вместо 32-битовых 1Ру4-адресов. На рис. 12.23 представлен формат «псевдозаголовка» для TCP- и UDP-протоколов в составе 1Ру6-заголовка.
|
3 2 б и т а |
|
А д р е с |
о т п р а в и т е л я |
п а к е т а |
А д р е с |
п о л у ч а т е л я |
п а к е т а |
« Р а з м е р б л о к а т р а н с п о р т н о г о у р о в н я » |
||
|
|
«Идентификатор |
0 0 0 0 0 0 0 0 0 . . . |
следующего |
|
|
|
заголовка» |
Рис. 12.23. Формат «псевдозаголовка» для TCP- и UDP-протоколов
в составе 1Ру6-заголовка
Если 1Ру6-пакет содержит заголовок расширения «Маршрути зация», то тогда адрес получателя пакета, используемый в псевдоза головке, одновременно является и адресом финального получателя пакета. На узле/отправителе этот адрес' будет в последнем элементе заголовка расширения «Маршрутизация», а на узле/ получателе этот адрес будет в поле «Адрес получателя пакета» 1Ру6-заголовка.
Значение в поле «Идентификатор следующего заголовка» псевдозаголовка идентифицирует протокол верхнего уровня (для UDP-протокола - «6», для ТСР-протокола - «17»). Это значение бу дет отличаться от значения в аналогичном поле 1Ру6-заголовка, если конечно имеют место иные заголовки расширения между IPv6заголовком и заголовком верхнего уровня.
Поле «Размер блока транспортного уровня» в псевдозаголовке содержит значение длины блока транспортного уровня (например, заголовок TCP-блока плюс поле полезной нагрузки TCP-блока). Не которые протоколы транспортного и прикладного уровней разме щают в своих сообщениях данные о длине (размере) этих сообщений (например, в заголовке блока UDP-протокола содержится поле «Пол ная длина дейтаграммы»). В случае применения таких протоколов
178 |
Глава 12. Протокол IP шестой версии |
значение длины протокольного сообщения размещается в поле «Раз мер блока транспортного уровня» псевдозаголовка. Другие протоко лы (например, TCP-протокол) не размещают в своих сообщениях данные о длине (размере) этих сообщений. В этом случае в поле «Размер блока транспортного уровня» псевдозаголовка указывается значение, равное значению в поле «Размер поля полезной нагрузки» 1Ру6-заголовка за вычетом длины всех заголовков расширения, раз мещённых между 1Ру6-заголовком и заголовком верхнего уровня.
В отличие от 1Ру4-протокола, когда 1Ру6-узлом/отправителем передаются UDP-дейтаграммы, вычисление проверочных сумм этих дейтаграмм является обязательным. Другими словами, если переда ется UDP-пакет (то есть 1Ру6-пакет, содержащий UDP-дейтаграмму), то тогда 1Ру6-узел/отправитель должен вычислить проверочную сумму данного пакета, используя для этого последовательность ок тетов, в которую входят сам пакет и псевдозаголовок. Если результат вычисления оказался равным нулю, то тогда 16-битовое поле «Кон трольная сумма» в заголовке UDP-дейтаграммы должно заполняться единицами. 1Ру6-узлы/получатели должны уничтожать UDP-пакет, в котором поле «Контрольная сумма» заголовка UDP-дейтаграммы содержит только одни нули, и после этого они должны регистриро вать возникновение нештатной ситуации (ошибки).
Шестая версия ICMP-протокола (ICMPv6) включает рассмот ренный выше псевдозаголовок и последовательность октетов, по ко торой вычисляется проверочная сумма (в этом заключается одно из отличий от ICMPv4, которая не предусматривает включение псевдо заголовка при расчёте проверочной суммы). Причина этого заклю чается в том, что 1СМРу6-сообщения необходимо защитить от оши бочной доставки и искажения тех полей 1Ру6-заголовка, на которые оно ссылается, так как (в отличие от 1Ру4-протокола) 1Ру6-заголовок не входит в последовательность октетов, по которой вычисляется проверочная сумма сетевого уровня Internet-архитектуры. Если зна чение в поле «Идентификатор следующего заголовка» псевдозаго ловка для ICMP-протокола равно «58», то это указывает на наличие 1СМРу6-сообщения.
Максимальное «время жизни» 1Ру6-пакета. В отличие от 1Ру4-протокола, 1Ру6-узлам нет необходимости устанавливать мак симальное «время жизни» 1Ру6-пакета («maximum packet lifetime»). По этой причине поле «Время жизни» («Time to Live») в 1Ру4-пакете было переименовано в поле «Число ретрансляций» («Нор Limit») в 1Ру6-пакете. На практике, очень редко, если конечно нет каких-либо специальных задач, когда программные 1Ру4-модули придержива ются требования относительно ограничения времени существова
Раздел II. |
179 |
ния пакета (причём такая ситуация остается практически неизмен ной). Любой протокол верхнего уровня, который «доверяет» сете вому (IP) уровню (IPv4или 1Ру6-протоколу) процедуру ограниче ния «времени жизни» пакета, должен дополнить набор реализуе мых им функций специальными процедурами выявления и унич тожения просроченных пакетов.
Максимальный размер поля полезной нагрузки в сообщении протокола верхнего уровня. При расчёте максимального размера поля полезной нагрузки в сообщении протокола верхнего уровня, последний должен учитывать наибольший размер 1Ру6-заголовка от носительно 1Ру4-заголовка. Например, в 1Ру4-протоколе существует специальная процедура расчёта максимального размера ТСР-блока (MSS - maximum segment size), в соответствие с которой этот размер рассчитывается как максимальный размер пакета (либо значение в режиме «по-умолчанию», либо значение MTU-параметра) минус 40 октетов (из которых 20 октетов для 1Ру4-заголовка минимальной длины и 20 октетов для ТСР-заголовка минимальной длины). Если TCP-протокол используется совместно с 1Ру6-протоколом, то тогда MSS должен рассчитываться как максимальный размер пакета ми нус 60 октетов, так как минимальный размер 1Ру6-заголовка (т.е., 1Ру6-заголовок без заголовков расширения) на 20 октетов длиннее, чем 1Ру4-заголовок минимальной длины.
Ответная реакция на принятые пакеты, содержащие заго ловки расширения «Маршрутизация». Если протокол верхнего уровня передает одно или несколько сообщений, преобразуемые на сетевом уровне в 1Ру6-пакеты, в ответ на принятое сообщение, пере данное с помощью 1Ру6-пакета, содержащего заголовок «Маршру тизация», то тогда ответный(е) 1Ру6-пакет(ы) не должны содержать заголовок «Маршрутизация», который был автоматически извлечен из принятого 1Ру6-пакета. Однако все сказанное выше не относится к процедурам проверки целостности и аутентификации IP-адреса узла/отправителя и заголовка «Маршрутизация» (например, на ос нове использования заголовка расширения «Аутентификация» в принятом пакете). Другими словами, допускается передача только следующих типов пакетов в ответ на принятый пакет, содержащий заголовок «Маршрутизация»:
• ответные пакеты, не содержащие заголовок «Маршрутизация»;
оответные пакеты, содержащие заголовок «Маршрутизация», но только не тот, который был извлечен из принятого пакета (например, заголовок «Маршрутизация», который использует ся для локальной настройки);
180 |
Глава 12. Протокол IP шестой версии |
оответные пакеты, содержащие заголовок «Маршрутизация», но только тот, который был извлечен из принятого пакета уз лом/получателем и прошли в обязательном порядке на уз ле/получателе процедуры проверки целостности и аутенти фикации IP-адреса узла/отправителя и заголовка «Маршру тизация».
12.15. ICMP-протокол для IP-протокола шестой версии (RFC-4443)
1СМРу6-протокол имеет собственное обозначение в поле «Следующий заголовок» в IP-заголовке IPv6: «58». ICMPv6 использу ется в составе программного обеспечения 1Ру6-узлов в целях пере дачи сообщений, уведомляющих об ошибках, которые были обна ружены при обработке IP-сообщений (IP-пакетов), а также для реа лизации других технологических функций (например, диагности ческих «ping»). Программный 1СМРу6-модуль является составной частью 1Ру6-модуля и должен обязательно присутствовать в каждом 1Ру6-узле.
Общий формат сообщений. 1СМРу6-сообщения можно раз делить на два класса:
•сообщения об ошибках;
•информационные сообщения.
Сообщения об ошибках отличаются тем, что в поле «Тип со
общения» старший бит имеет нулевое значение. Таким образом, со общения об ошибках могут иметь в поле «Тип сообщения» значения 0.. .127, а информационные - 128.. .255.
Существуют следующие 1СМРу6-сообщения:
Сообщения об ошибках
«1» - узел назначения не достижим;
«2» - размер IP-пакета слишком большой; «3» - превышение времени; «4» - параметрическая проблема;
Информационные сообщения
«128» - запрашивающий эхо-пакет; «129» - ответный эхо-пакет.
Каждому 1СМРу6-сообщению предшествует 1Ру6-заголовок и может быть один или несколько (или не быть вообще) ГРуб-заголовков расширения. 1СМРу6-заголовок идентифицируется значением «58» в поле «Следующий заголовок» заголовка, который непосредственно предшествует 1СМРу6-заголовку. (Примечание. Это значение отличает ся от того, которое используется в стандарте ICMPv4.) На рис. 12.24 представлен общий формат 1СМРу6-сообщений.
раздел II. |
|
|
181 |
|
8_________________________15_ 1 6 |
3 1 |
|
«Тип ЮМРуб-сообщения» |
«Тип код ирования» |
« П р о в ер о ч н ая сум м а» |
|
« Т е л о |
1 С М Р у 6 - с о о б щ е н и я » |
Рис. 12.24. Общий формат 1СМРу6-сообщений
Поле «Тип 1СМРу6-сообщения» указывает на тип ICMPv6-co- общения. Значение, содержащееся в этом поле, определяет формат следующих за этим полем данных.
Поле «Тип кодирования» зависит от типа 1СМРу6-сообщения. Оно предназначено для создания дополнительного уровня структу ры сообщения.
Поле «Проверочная сумма» используется для обнаружения ис каженных данных в 1СМРу6-сообщении и некоторых частях 1Ру6-за- головка.
Определение адреса источника сообщения. IP-узел, который передает 1СМРу6-сообщение, должен определить 1Ру6-адреса ис точника и получателя сообщения и разместить их в 1Ру6-заголовке и только потом рассчитать контрольную сумму. Если IP-узел имеет более одного адреса, то тогда он должен выбрать адрес источника сообщения следующим образом:
оесли сообщение является ответом на сообщение, которое было принято этим IP-узлом и содержало один из его уникальных ад ресов, то тогда адрес источника в ответе должен быть таким, ко торый был указан в принятом сообщении (адрес получателя);
оесли сообщение является ответом на сообщение, которое было принято этим IP-узлом и содержало широковещательный или групповой адрес (причем данный IP-узел входит в это объеди нение узлов с таким адресом), то тогда адрес источника в отве те должен быть уникальным адресом того интерфейса, на ко торый поступил IP-пакет с широковещательным или группо вым адресом;
весли сообщение является ответом на сообщение, переданное по адресу, который не принадлежит данному IP-узлу (но было им получено), то тогда целесообразно, чтобы адрес источника был уникальным адресом этого IP-узла, который используется по следним для диагностирования ошибок (то есть, наиболее при емлем для диагностирования ошибок). Например, если сообще ние является ответом на IP-пакет, подлежащий дальнейшей ретрансляции, но которая не может быть успешно осуществлена, то тогда адрес источника в ответе должен быть уникальным ад