RFC: 4884
Оригинал: Extended ICMP to Support Multi-Part Messages
Категория: Предложенный стандарт
Дата публикации:
Авторы: , , ,
Перевод: Николай Малых

4. Расширяемость ICMP

RFC 792 определяет следующие типы сообщений ICMPv4:

  • Destination Unreachable — адресат недоступен
  • Time Exceeded — время жизни истекло
  • Parameter Problem — проблема с параметрами
  • Source Quench — слишком большая скорость передачи
  • Redirect — перенаправление
  • Echo Request/Reply — запрос/отклик эхо
  • Timestamp/Timestamp Reply — временная метка и отклик с временной сеткой
  • Information Request/Information Reply — информационный запрос/отклик

[RFC1191] резервирует биты для поля Next-Hop MTU в сообщениях Destination Unreachable.

RFC 4443 определяет следующие типы сообщений ICMPv6:

  • Destination Unreachable — адресат недоступен
  • Packet Too Big — слишком большой пакет
  • Time Exceeded — время жизни истекло
  • Parameter Problem — проблема с параметрами
  • Echo Request/Reply — запрос/отклик эхо

Многие сообщения ICMP в соответствии с текущими опеределениями являются расширяемыми. Разработчики протоколов могут расширять сообщения ICMP простым добавлением полей или структур данных в конец сообщения.

Однако ряд сообщений ICMP в соответствии с текущими определениями не поддерживает расширений:

  • ICMPv4 Destination Unreachable (type = 3)
  • ICMPv4 Time Exceeded (type = 11)
  • ICMPv4 Parameter Problem (type = 12)
  • ICMPv6 Destination Unreachable (type = 1)
  • ICMPv6 Packet Too Big (type = 2)
  • ICMPv6 Time Exceeded (type = 3)
  • ICMPv6 Parameter Problem (type = 4)

Эти сообщения содержат поле «исходной дейтаграммы», которое включает начальные октеты дейтаграммы, вызвавшей сообщение ICMP. RFC 792 определеяет поле «исходной дейтаграммы» для сообщений ICMPv4. В RFC 792 поле «исходной дейтаграммы» включает заголовок IP и следующие за ним 8 октетов исходной дейтаграммы. [RFC1812] расширяет поле «исходной дейтаграммы», позволяя включать в него любое число октетов при условии, что размер сообщения ICMP не будет превышать минимальный размер буфера сборки IPv4 (т. е., 576 октета). RFC 4443 определяет поле «исходной дейтаграммы» для сообщений ICMPv6. В RFC 4443 поле «исходной дейтаграммы» всегда содержит столько октетов, сколько можно включить без превышения сообщением ICMP минимального размера IPv6 MTU (т. е., 1280 октетов).

К сожалению, поле «исходной дейтаграммы» не имеет атрибута размера. Приложения определяют размер этого поля по общему размеру сообщения ICMP. Если к сообщения добавляется структура расширения без добавления атрибута размера поля «исходной дейтаграммы», сообщение становится «неразборчивым». В частности, приложение не сможет определить, где заканчивается поле «исходной дейтаграммы» и начинается структура расширения.

Для решения этой проблемы в настоящем документе вводится 8-битовый атрибут размера для следующих сообщений ICMPv4:

  • Destination Unreachable (type = 3)
  • Time Exceeded (type = 11)
  • Parameter Problem (type = 12)

Такой же 8-битовый атрибут размера добавляется в сообщения ICMPv6:

  • Destination Unreachable (type = 1)
  • Time Exceeded (type = 3)

Атрибут размера должен задаваться в тех случаях, когда к перечисленным выше сообщениям добавляется ICMP Extension Structure.

Атрибут размера показывает размер поля «исходной дейтаграммы». Пространство для атрибута размера берется из резервных октетов, которые раньше были определены с нулевым значением.

Для сообщения ICMPv4 атрибут размера показывает число 32-битовых слов. При наличии атрибута размера поле «исходной дейтаграммы» должно дополняться нулями для выравнивания по ближайшей 32-битовой границе. Поскольку в каждом из затрагиваемых изменениями типов сообщений ICMPv4 был зарезервирован шестой октет, этот октет был выбран для размещения атрибута размера в сообщениях ICMPv4.

Для сообщения ICMPv6 атрибут размера показывает количество 64-битовых слов. При наличии атрибута размера поле «исходной дейтаграммы» должно дополняться нулями для выравнивания по ближайшей 64-битовой границе. Поскольку в каждом из затрагиваемых типов сообщений ICMPv6 шестой октет был резервным, этот октет был выбран для размещения атрибута размера в ICMPv6.

Для обеспечения совместимости с более ранними версиями при добавлении в конец сообщения ICMP Extension Structure и наличии поля «исходной дейтаграммы» последнее должно содержать не менее 128 октетов. Если в исходной дейтаграмме менее 128, поле «исходной дейтаграммы» должно дополняться нулями до 128 октетов (обоснование этого приведено в параграфе 5.1).

В следующих параграфах описан атрибут размера в сообщениях ICMP.

2007 - 2017 © Русские переводы RFC, IETF, ISOC.