Версия 6 протокола Internet Control Message Protocol (ICMPv6) сохраняет многие функции версии 4, но вводит и несколько важных изменений:
■ Сообщения ICMPv6 помогают в автоматической конфигурации адресов.
■ Новые сообщения и процедуры ICMPv6 заменяют протокол ARP.
■ Автоматизируется исследование максимального элемента пересылки (MTU) по пути. Поскольку маршрутизаторы более не фрагментируют пакеты, то в случае слишком большого размера пакетов источнику отправляется сообщение Packet Too Big (пакет слишком велик).
■ ICMPv6 не посылает сообщений Source Quench.
■ ICMPv6 принимает на себя функции отчета о членстве в многоадресной группе протокола Internet Group Management Protocol.
■ ICMPv6 помогает определить выключение маршрутизатора или партнера по коммуникации.
ICMPv6 настолько отличается от старой версии, что ему присвоен новый номер 58 в заголовке Next Header.
В таблице 23.1 перечислены основные типы сообщений ICMPv6. Отметим, что сообщениям об ошибке присвоены номера от 0 до 127, а информационным сообщениям — от 128 до 255. Общий формат сообщения ICMP показан на рис. 23.1. Сначала рассмотрим сообщения ICMP, сходные с сообщениями версии 4.
Таблица 23.1 Типы сообщений ICMP
Сообщения об ошибках | Тип |
---|---|
Destination Unreachable (точка назначения недоступна) | 1 |
Packet Too Big (пакет слишком велик) | 2 |
Time Exceeded (истекло время) | 3 |
Parameter Problem (проблема с параметрами) | 4 |
Информационные сообщения | Тип |
Echo Request (эхо-запрос) | 128 |
Echo Reply (эхо-ответ) | 129 |
Group Membership Query (запрос о членстве в группе) | 130 |
Group Membership Report (отчет о членстве в группе) | 131 |
Group Membership Reduction (исключение из членов группы) | 132 |
Рис. 23.1. Формат сообщения ICMPv6
Причина отправки сообщения Destination Unreachable (точка назначения недоступна) определяется кодами:
0 Нет маршрута к точке назначения
1 Административно запрещено взаимодействие с точкой назначения
2 Следующее назначение в заголовке Routing не является соседом, но установлен бит strict.
3 Адрес недоступен
4 Порт недоступен
Формат сообщения Destination Unreachable показан на рис. 23.2.
Рис. 23.2. Формат сообщения Destination Unreachable
Маршрутизатор посылает сообщение Packet Too Big (пакет слишком велик), когда пакет больше MTU связи следующего попадания. Это значение будет включено в отправляемое сообщение. В версии 4 этот же смысл имеет сообщение Destination Unreachable. Формат сообщения Packet Too Big показан на рис. 23.3.
Рис. 23.3. Формат сообщения Packet Too Big
Сообщение Time Exceeded (истекло время) отправляется маршрутизатором, который уменьшил счетчик попаданий до нуля (код = 0), или системой, у которой закончилось время на сборку пакета (код = 1). Формат сообщения идентичен Destination Unreachable, но поле типа равно 3.
Сообщение Parameter Problem (проблема с параметрами) отправляет система, которая не может обработать пакет из-за одного из полей заголовка. Коды сообщения:
0 Неправильное количество полей заголовка
1 Нераспознанный тип в поле Next Header
2 Нераспознанный вариант IPv6
Формат сообщения идентичен Destination Unreachable, но неиспользованное поле занято указателем, описывающим смещение октета с ошибкой, а тип равен 4.
Сообщения Echo Request (эхо-запрос) и Echo Reply (эхо-ответ) имеют формат, как и в версии 4, но для запроса используется тип = 128, а для ответа тип = 129.
Формат сообщений многоадресных рассылок Group Membership (членство в группе) показан на рис. 23.4. Он был изменен относительно версии 4 для согласования с форматом ICMPv6. Поле Maximum Response Delay (максимальная задержка ответа) имеет ненулевое значение только в сообщениях запросов. Оно указывает максимальное время, на которое может быть задержан ответ. В сообщении могут быть перечислены следующие типы:
130 Group Membership Query
131 Group Membership Report
132 Group Membership Reduction
Рис. 23.4. Формат сообщений Group Membership
На момент выхода книги еще продолжалась работа над очень важным набором спецификаций для автоматизации функций связи. К ним можно отнести:
Router Discovery | Исследование маршрутизаторов. Поиск маршрутизаторов в локальной связи. |
Prefix Discovery | Исследование префикса. Исследование и использование префикса точки назначения (на связи или удаленной). Используется вместо маски подсети. |
Parameter Discovery | Исследование параметров. Выяснение значений параметров (например, MTU или предела по умолчанию для счетчика попаданий). |
Address Autoconfiguration | Автоконфигурация адресов. Самоконфигурация адресов интерфейса связи. |
Address Resolution | Разрешение адресов. Отображение IP-адреса соседа по связи на адрес уровня связи данных. |
Next-hop Determination | Определение следующего попадания. Отображение IP-адреса на адрес участка следующего попадания. |
Neighbor Unreachability Detection | Определение недостижимости соседа. Определение отказавшего соседнего хоста или маршрутизатора. |
Duplicate Address Detection | Определение дублирования адресов. Проверка, не используется ли присваиваемый IP-адрес другой системой. |
Redirect | Перенаправление. Получение уведомления, что существует лучший маршрутизатор для данной точки назначения или что точка назначения находится в локальной связи. |
В таблице 23.2 перечислены сообщения ICMPv6, предлагаемые для реализации функций Neighbor Discovery.
Таблица 23.2 Сообщения ICMP для исследования соседей
Информационное сообщение | Тип |
---|---|
Router Solicitation Message (сообщение-ходатайство маршрутизатора) | 133 |
Router Advertisement Message (сообщение-объявление маршрутизатора) | 134 |
Neighbor Solicitation Message (сообщение-ходатайство соседа) | 135 |
Neighbor Advertisement Message (сообщение-объявление соседа) | 136 |
Redirect (перенаправить) | 137 |
Маршрутизаторы предоставляют хостам:
■ Адресную информацию маршрутизатора
■ Список всех префиксов, используемых связью
■ Префиксы, которые должны применять хосты для создания собственных адресов
■ Максимальный предел попаданий, который должен использоваться для путей, проходящих через этот маршрутизатор
■ Указание, должны ли хосты использовать сервер загрузки для получения дополнительных конфигурационных данных
■ MTU для связи, имеющей различные MTU
■ Значения для различных таймеров
Все эти операции выполняются через сообщения ICMPv6 Router Advertisement (объявления маршрутизатора), имеющие тип 134. Хосты слушают сообщения Router Advertisement по всем адресам многоадресных рассылок на всех узлах локальной связи.
Когда хост загружается, он может не дождаться Router Advertisement и отправить сообщение Router Solicitation (ходатайство маршрутизатору) с типом 133, чтобы вызвать объявление от маршрутизатора. Маршрутизатор отвечает сообщением Advertisement по адресу локальной связи хоста.
В настоящее время предлагается заменить запросы старого протокола Address Resolution Protocol (ARP) новыми многоадресными сообщениями протокола ICMP Neighbor Solicitation и Advertisement (ходатайство и объявление соседа). Сообщение Neighbor Advertisement является ответом на Neighbor Solicitation. Кроме исследования соседей по адресам уровня связи данных, сообщение Neighbor Solicitation применяется для:
■ Обнаружения дублированных IP-адресов
■ Тестирования, является ли маршрутизатор отключенным
■ Тестирования, является ли отключенным сосед, которому посылались пакеты
Для исследования адреса соседа на уровне связи данных сообщение Neighbor Solicitation отправляется на специальный адрес, называемый целевым адресом ходатайствующего узла для многоадресной рассылки (solicited-node multicast address). Этот адрес сформирован из младших 32 бит целевого IP-адреса и предопределенного 96-разрядного префикса FF02:0:0:0:0:1. Таким способом создается адрес многоадресной рассылки, вложенный в локальную связь. Отправитель включает в сообщение собственный адрес уровня связи данных.
Использование этой специализированной многоадресной рассылки существенно сокращает количество систем, слушающих запрос. Вполне вероятно, что только целевая система будет реагировать на такой запрос.
Перед использованием IP-адреса локальной связи или любого другого адреса, который не был построен путем добавления префикса к адресу локальной связи, узел должен послать сообщение Neighbor Solicitation с целью узнать, имеет ли кто-то из соседей выбранный IP-адрес. В качестве исходного адреса для сообщения узел применяет неспецифицированный адрес. Если адрес IP уже используется, его владелец пошлет ответ в многоадресной рассылке.
Обнаружение неисправного маршрутизатора было рискованным делом в IPv4. В версии 6, когда тайм-аут указывает на бездействующий маршрутизатор, система проверяет такой маршрутизатор одноадресным сообщением Neighbor Solicitation.
Такая же процедура выполняется, чтобы проверить недостижимость соседнего хоста.
Как и в версии 4, когда хост пересылает датаграмму на неправильный локальный маршрутизатор, он получает обратно сообщение Redirect (перенаправление), указывающее правильный узел для первого попадания. Сообщение Redirect может использоваться для уведомления отправителя о размещении точки назначения в локальной связи. Возможно, именно поэтому сообщение Redirect определено в спецификации Neighbor Discovery.
Ha рис. 23.5 показан предложенный формат для сообщения Redirect в ICMPv6. Целевой адрес — это адрес IP следующего попадания, который должен использоваться при пересылке пакета. Адрес назначения — это выбранная точка назначения. Поле выбора содержит адрес уровня связи данных целевой системы и может также включать сведения для перенаправления датаграммы.
Рис. 23.5. Формат сообщения Redirect
ICMPv6 описан в RFC 1885. На момент выхода книги протоколы Neighbor Discovery были еще на стадии обсуждения.