stringtranslate.com

Путь обнаружения MTU

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

Выполнение

Для пакетов IPv4 обнаружение MTU пути работает путем установки бита флага Don't Fragment (DF) в заголовках IP исходящих пакетов. Затем любое устройство на пути, MTU которого меньше пакета, отбросит его и отправит обратно сообщение ICMP Fragmentation Needed (Type 3, Code 4), содержащее его MTU, что позволяет исходному хосту соответствующим образом уменьшить MTU своего пути. Процесс повторяется до тех пор, пока MTU не станет достаточно малым, чтобы пройти весь путь без фрагментации.

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

Если MTU пути изменится после установки соединения и станет ниже, чем ранее определенный MTU пути, первый большой пакет вызовет ошибку ICMP, и будет найден новый, более низкий MTU пути. Если путь изменится, а новый MTU пути больше, источник не узнает об увеличении, поскольку все маршрутизаторы вдоль нового пути смогут ретранслировать все пакеты, которые отправит источник, используя изначально определенный, более низкий MTU пути. [5] [6] [4]

Проблемы

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

Некоторые реализации PMTUD пытаются обойти эту проблему, делая вывод, что большие пакеты полезной нагрузки были потеряны из-за MTU, а не перегрузки канала. Одна из таких схем стандартизирована в RFC 8899, Datagram Packetization Layer Path MTU Discovery (DPLPMTUD). [3] При потере связи DPLPMTUD использует пробные пакеты контролируемых размеров для проверки MTU пути. Подтверждение пробного пакета указывает на то, что MTU пути по крайней мере равен размеру этого пакета. Использование DPLPMTUD стандартизировано в QUIC . [8] Однако для того, чтобы протоколы транспортного уровня работали наиболее эффективно, сообщения ICMP Unreachable (тип 3) все равно должны быть разрешены.

Некоторые маршрутизаторы, включая ядро ​​Linux [9] и Cisco [10] , предоставляют возможность уменьшить максимальный размер сегмента (MSS), объявленный в TCP-рукопожатии в качестве обходного пути. Это известно как MSS clamping .

Другая проблема возникает, когда администраторы сетей не обновляют MTU должным образом между 2 соседними переходами уровня 3, если связь между этими переходами состоит из нескольких сегментов уровня 2 с коммутаторами между ними. Обычно MTU на исходящем интерфейсе L3 берется из первого сегмента L2. Но если второй или последующий сегмент имеет более низкий MTU, то коммутатор, который находится между ними, просто молча отбросит пакет, не сообщая обратно ни о каком ICMP (потому что только переходы уровня 3 могут генерировать ICMP "packet too big"). Таким образом, в этом случае администраторы должны обновить MTU для каждого исходящего интерфейса L3 до минимального MTU сегментов уровня 2, используемых до следующего перехода L3.

Ссылки

  1. ^ J. Mogul; S. Deering (ноябрь 1990 г.). Path MTU Discovery. Сетевая рабочая группа. doi : 10.17487/RFC1191 . RFC 1191. Проект стандарта. Устаревший RFC 1063.
  2. ^ J. McCann; S. Deering ; J. Mogul (июль 2017 г.). R. Hinden (ред.). Path MTU Discovery для IP версии 6. IETF . doi : 10.17487/RFC8201 . STD 87. RFC 8201. Интернет-стандарт 87. Устаревший RFC 1981.
  3. ^ ab G. Fairhurst; T. Jones; M. Tüxen; I. Rüngeler; T. Völker (сентябрь 2020 г.). Packetization Layer Path MTU Discovery for Datagram Transports. Internet Engineering Task Force (IETF). doi : 10.17487/RFC8899 . ISSN  2070-1721. RFC 8899. Предлагаемый стандарт. Обновления RFC 4821, 4960, 6951, 8085 и 8261.
  4. ^ ab Дэвис, Джозеф (2012). Понимание IPv6 (3-е изд.). Редмонд: Microsoft Press. стр. 146–147. ISBN 978-0735659148. OCLC  810455372.
  5. ^ E. Comer, Douglas (2014). Сетевое взаимодействие с TCP/IP, том 1 (6-е изд.). Pearson. стр. 133–134. ISBN 0-13-608530-X.
  6. ^ исходный код linux (ipv4) и исходный код linux (ipv6) см. строку с "mtu_expires" 10 * 60 секунд
  7. ^ K. Lahey (сентябрь 2000 г.). Проблемы TCP с обнаружением MTU пути. Сетевая рабочая группа. doi : 10.17487/RFC2923 . RFC 2923. Информационный.
  8. ^ Дж. Айенгар; М. Томсон, ред. (май 2021 г.). QUIC: Мультиплексированный и безопасный транспорт на основе UDP. Internet Engineering Task Force . doi : 10.17487/RFC9000 . ISSN  2070-1721. RFC 9000. Предлагаемый стандарт.
  9. ^ "Искажение заголовков пакетов - nftables wiki". wiki.nftables.org . Получено 2024-07-03 .
  10. ^ "Концепция настройки Ethernet MTU и TCP MSS для подключений PPPoE". Cisco . Получено 2024-07-03 .