Обнаружение MTU пути - Path MTU Discovery

Обнаружение MTU пути (PMTUD) является стандартизированной техникой в компьютерная сеть для определения максимальная единица передачи (MTU) размер сетевого пути между двумя узлами Интернет-протокола (IP), обычно с целью избежать Фрагментация IP. PMTUD изначально предназначался для маршрутизаторов в Интернет-протокол версии 4 (IPv4).[1] Однако все современные операционные системы используют его на конечных точках. В IPv6, эта функция явно делегирована конечным точкам сеанса связи.[2]

PMTUD стандартизирован для IPv4 в RFC 1191 и для IPv6 в RFC 8201 (который устарел RFC 1981, предыдущий стандарт IPv6 PMTUD).[3] RFC 4821 описывает расширение методов, которое работает без поддержки со стороны Протокол управляющих сообщений Интернета.

Выполнение

Для пакетов IPv4 обнаружение MTU пути работает путем установки параметра Не фрагментируйте (DF) бит флага в IP-заголовках исходящих пакетов. Затем любое устройство на пути, MTU которого меньше, чем пакет, отбросит его и отправит обратно Протокол управляющих сообщений Интернета (ICMP) Необходима фрагментация (Тип 3, Код 4) сообщение, содержащее его MTU, позволяющее хосту-источнику соответствующим образом уменьшить свой MTU пути. Процесс повторяется до тех пор, пока MTU не станет достаточно маленьким, чтобы пройти весь путь без фрагментации.

Маршрутизаторы IPv6 не поддерживают фрагментация и, следовательно, не поддерживают Не фрагментируйте вариант. Для IPv6 обнаружение MTU пути работает, изначально предполагая, что MTU пути совпадает с MTU в уровень связи интерфейс, откуда исходит трафик. Затем, как и в случае с IPv4, любое устройство на пути, чей MTU меньше, чем пакет, отбрасывает пакет и отправляет обратно ICMPv6 Пакет слишком большой (Тип 2) сообщение, содержащее его MTU, позволяющее исходному узлу соответствующим образом уменьшить свой MTU пути. Процесс повторяется до тех пор, пока MTU не станет достаточно маленьким, чтобы пройти весь путь без фрагментации.[4]

Если значение Path MTU изменяется после установки соединения и становится меньше, чем ранее определенное значение Path MTU, первый большой пакет вызовет ошибку ICMP, и будет обнаружен новый, более низкий MTU пути. И наоборот, если PMTUD обнаруживает, что путь допускает больший MTU, чем возможно на нижнем канале, ОС будет периодически повторно проверять, изменился ли путь, и теперь допускает более крупные пакеты. На обоих Linux и Windows по умолчанию этот таймер установлен на десять минут.[5][6]

Проблемы

Многие так называемые устройства сетевой безопасности блокировать все сообщения ICMP для предполагаемых преимуществ безопасности,[7] включая ошибки, которые необходимы для правильной работы PMTUD; обратите внимание, это несмотря на то, что упомянутая статья конкретно описывает хороший ICMP что требуется для правильной работы PMTUD. Это может привести к соединениям, завершающим Трехстороннее рукопожатие TCP правильно, но потом зависает при передаче данных. Это состояние называется связь с черной дырой.[8]

Некоторые реализации PMTUD пытаются предотвратить эту проблему, делая вывод, что большие пакеты полезной нагрузки были отброшены из-за MTU, а не из-за перегрузки канала. Однако для того, чтобы Протокол управления передачей (TCP) для наиболее эффективной работы, ICMP Недоступен сообщения (тип 3) должны быть разрешены. Надежный метод для PMTUD, который полагается на TCP или другой протокол для проверки пути с прогрессивно большими пакетами, был стандартизирован в RFC 4821.[9]

Некоторые маршрутизаторы используют обходной путь, чтобы изменить максимальный размер сегмента (MSS) всех TCP-соединений, проходящих через ссылки с MTU ниже, чем Ethernet по умолчанию 1500. Это известно как Зажим MSS.[10]

Рекомендации

  1. ^ RFC 1191, Обнаружение MTU пути, Дж. Могул, С. Диринг (ноябрь 1990 г.)
  2. ^ RFC 1981, Обнаружение MTU пути для IP версии 6, Дж. Макканн, С. Диринг, Дж. Могул (август 1996 г.)
  3. ^ Могул, Джеффри; Хинден, Роберт (июль 2017 г.). «Обнаружение MTU пути для IP версии 6». tools.ietf.org. ISSN  2070-1721. Получено 15 апреля, 2019.
  4. ^ Дэвис, Джозеф (2012). Понимание IPv6 (3-е изд.). Microsoft Press. С. 146–147. ISBN  9780735659148.
  5. ^ исходный код linux (ipv4) и исходный код linux (ipv6) см. строчку с "mtu_expires" 10 * 60 секунд
  6. ^ Дэвис, Джозеф (2012). Понимание IPv6 (3-е изд.). Редмонд: Microsoft Press. п. 147. ISBN  978-0735659148. OCLC  810455372.
  7. ^ Майкл Маллинз (21.10.2003). «Предотвратить зондирование хакеров, заблокировав трафик ICMP». Получено 2013-07-12.
  8. ^ RFC 2923, Проблемы TCP с обнаружением MTU путиК. Лэхи (сентябрь 2000 г.)
  9. ^ RFC 4821, Обнаружение MTU пути уровня пакетирования, М. Матис, Дж. Хеффнер (март 2007 г.)
  10. ^ «Обход проблем обнаружения MTU пути с помощью ограничения MSS (для пользователей ADSL, кабеля, PPPoE и PPtP)». lartc.org. Получено 2019-04-15.