Безопасность : Серия Сisco-совместимых сетевых экранов IntraGuard

Технические примечания по Совместимым Системам: Фрагментация IP и обнаружение пути MTU с использованием VPN

20 октября 2016 - Машинный перевод
Другие версии: PDF-версия:pdf | Английский (6 ноября 2015) | Отзыв


Содержание


Введение

Этот документ описывает IP framentation и обнаружение пути MTU с VPN.

Предварительные условия

Требования

Для этого документа отсутствуют особые требования.

Используемые компоненты

Настоящий документ не имеет жесткой привязки к каким-либо конкретным версиям программного обеспечения и оборудования.

Сведения, представленные в этом документе, были получены от устройств, работающих в специальной лабораторной среде. Все устройства, описанные в этом документе, были запущены с чистой (стандартной) конфигурацией. В рабочей сети необходимо изучить потенциальное воздействие всех команд до их использования.

Условные обозначения

Дополнительные сведения об условных обозначениях см. в документе Условные обозначения технических терминов Cisco.

Проблемы фрагментации ip

Семейство протоколов IP было создано для использования в широком спектре каналов связи. Максимальная длина IP-пакета — более 65 000 байт. Большинство соединений связи принуждает меньший предел максимальной длины пакета, названный максимальным размером передаваемого блока данных или MTU, который меняется в зависимости от типа соединения связи. Структура IP учитывает ограничения на длину пакетов канала путем разрешения промежуточным маршрутизаторам фрагментировать IP- пакеты, как это требуется для их исходящих каналов. В конечном пункте назначения IP-пакет должен быть снова собран из фрагментов.

Например, MTU для наиболее распространенной инкапсуляции IP по соединению связи Ethernet (RFC 894) leavingcisco.comсоставляет 1500 байтов. Условно MTU включает всю дейтаграмму IP, включая все IP - заголовки, но исключает заголовки инкапсуляции ссылки. Дополнительные заголовки канального уровня для инкапсуляции RFC 894 содержат 18 байтов для максимального размера кадра Ethernet, составляющего 1518 байтов.

В теории фрагментация должна быть в худшем случае довольно незначительной проблемой производительности, но на практике это может привести к завершенной неспособности передать длинные пакеты использования. Обнаружение пути MTU, обычный метод предотвращения фрагментации, который будет описан дальше, может выдать критическую ошибку.

TCP - подключение имеет два конца, и фрагментация могла произойти в любом направлении. Два фактора ограничивают максимальную длину TCP-пакета в каждом направлении: MTU исходящего интерфейса исходного компьютера, как замечено его стеком IP и Maximum Segment Size (MSS), если таковые имеются, о котором объявил конечный компьютер во время настройки TCP. (размеры MSS обычно на 40 байт меньше размеров MTU, поскольку в MSS не включаются 20-байтовые заголовки IP и 20-байтовые заголовки TCP.).)

IPSec может сделать проблемы фрагментации хуже, потому что он удлиняет каждый пакет IP одним, или возможно два, IP - заголовки. Эти добавленные заголовки варьируются по длине по выбору Протоколов IPSec (и используется ли "прозрачность NAT" IntraPort также), но опытным путем они не превышают 80 байтов за пакет. Для наиболее распространенной инкапсуляции IP по Ethernet стандартный MTU составляет 1500 байтов. Но если приложение испустило 1500 пакетов в 1 байт, которые должны были переместиться, хотя Туннель IPSec, добавленные Заголовки IPSEC потребуют фрагментации каждого пакета. Хороший способ (лучший способ, действительно) предотвращения фрагментации с IPSec уменьшает максимальный размер блока данных (MTU) интерфейса, который приложения и стек протоколов IP видят на обоих концах TCP - подключения. Если приложения и стек протоколов IP будут думать, что максимальный размер блока данных (MTU) интерфейса составляет 1420 байтов или меньше, то они не испустят пакеты, которые должны быть фрагментированы после Инкапсуляции IPSec для транспорта через маршрутизаторы Ethernet-size-capable и ссылки.

Обнаружение MTU маршрута

Обнаружение MTU маршрута – оптимизация, при помощи которой TCP соединение пытается отослать самые длинные пакеты, которые не будут фрагментированы на маршруте от источника к пункту назначения. Это делает это при помощи флага, DontFragment, в пакете IP. Этот флаг, как предполагается, изменяет поведение промежуточного маршрутизатора, который не может передать пакет через ссылку, потому что это слишком длинно. Обычно флаг выключен, и маршрутизатор должен фрагментировать пакет и передать фрагменты. Но если флаг DontFragment идет, маршрутизатор должен сбросить от пакета и возвратить ошибочный пакет, объяснив трудность источнику оригинального пакета. PMTUD – это хорошая идея в принципе, но не на практике. Реализация некачественно или плохо настроенного протокола TCP, маршрутизаторов или межсетевых экранов, приводит к тупиковому состоянию, где каждая сторона TCP-соединения ожидает ответа другой стороны. (Маршрутизатор / межсетевой экран, где эта проблема происходит, забавно называют черной дырой обнаружения MTU-маршрута.)

Исходный PMTUD выполнения запускается с максимальной длины пакета, которая является минимумом исходящего MTU интерфейса и MSS, о котором объявляют, во время настройки TCP (если таковые имеются) + 40, и работает вниз от той длины для обнаружения длины пакета, которая поступит в получателя, даже если будет установлен флаг DontFragment пакета. При выборе исходящего MTU тщательно (и интернет-провайдер тщательно), пакеты начальной максимальной длины пакета переживут прохождение без фрагментации. Таким образом, если PMTUD вызывает проблему, можно просто выключить его без снижения производительности вообще.

Линия продуктов IntraPort поддерживает Обнаружение MTU-маршрута. Это может быть включено путем настройки следующих пар Keyword=value в Общем разделе: PreTunnelFragmentation=true и MTUDiscoveryTimeout=10.

Дополнительные сведения относительно PMTUD могут быть найдены в RFC 1191 leavingcisco.comна веб-сайте IETF leavingcisco.com.

Диагноз

Предположим, что удаленному компьютеру назначено имя Alpha, и при попытке доступа к серверу Bravo с помощью клиента IntraPort происходит сбой. Ping - пакеты по умолчанию очень коротки. Если Браво не отвечает на "эхо-запрос" (но браво отвечает на "эхо-запрос" от компьютера на локальной сети), фрагментация не является проблемой. Проверьте основное подключение. Проверьте, проводит ли команда traceroute (или tracert для Windows) для IP-адреса IntraPort через правильные маршрутизаторы или "застревает" в петле маршрутизатора (т. е. приводит к повторяющимся переходам между одной и той же парой серверов).

Если Браво отвечает на эхо-запрос по умолчанию, и если Альфой является Компьютер под управлением Windows, можно теперь попробовать (от командной строки DOS), "пропинговывают IP-адрес-l Браво 2000 года". Если вы получаете очень высокий процент хороших ответов (> 95%), вы знаете, что фрагментация и повторная сборка должны работать должным образом, так как пакеты с 2000 байтовыми IP не могут возможно переместиться нефрагментированные на Ethernet. Если вы не получаете ответов, или процент потерянных ответов значителен превышает процент от потерянных ответов для ping - пакетов длины по умолчанию, вероятно, что ваша проблема вызывается фрагментацией.

Когда игра с эхо-запросом Windows, знать, что, когда вы задаете "-l <n>", пакеты IP, вы генерируете, фактически <n> + 28 байтов длиной тем же соглашением, используемым в вычислении MTU: все IP-заголовки, нет заголовков уровня канала. также знайте, что можно установить флаг DontFragment в ping - пакетах: это - "-f" параметр. Если вы передаете длинный пакет с набором флага "-f", и вы не слышите извинения и никакого ответа, вы могли бы видеть черную дыру PMTUD. Это можно обнаружить даже при использовании "tracert" (трассировка Windows) для анализа цепочки маршрутизаторов между вашим компьютером и получателем и отправки эхо-запроса "ping" для получения сведений о каждом маршрутизаторе.

Связанные с фрагментацией параметры конфигурации для различных операционных систем компьютера клиента

Windows 9x

MaxMTU дополнительного параметра реестра может быть привязан к связываниям адаптера. Это очевидно влияет на исходящий MTU, как замечено стеком протоколов IP и MSS, о котором объявляют, во время настройки TCP. Если MaxMTU отсутствует в привязке, MTU по умолчанию для адаптера (1500 для Ethernet) принят. Если вы видите проблемы фрагментации, MaxMTU набора на вашем активном сетевом интерфейсе TCP к 1420. Если вы сделали, который (перезагрузил), и вы все еще испытываете затруднения, я предполагаю, что вы устанавливаете параметр реестра PMTUDiscovery явно в 0.

Для получения дополнительной информации на том, где найти параметры, считайте Q158474 статьи Базы знаний Microsoft leavingcisco.com. Параметр MaxMTU хитер: не легко выяснить, какая привязка (индексированный четырьмя десятичными цифрами) является той, которую вы хотите (подсказка: ищите IP-адрес), и достаточно мелкие изменения в вашей конфигурации сети могут заставить параметр исчезнуть. Можно попробовать испытательную программу ПО и оборудования TweakDUN или параметров ПО и оборудования MTUSpeed, чтобы не рисковать установкой своей ОС при изменении реестра вручную.

Windows NT4.0

Для получения общей информации о параметрах реестра IP NT считайте Q120642 статьи Базы знаний Microsoft leavingcisco.com. Статья Q183229 leavingcisco.com вдается в определенные подробности о взаимодействиях MTU со Службами удаленного доступа, которые использует Intraport - клиент до версии 3.3.x. В статье предполагается, что максимальный размер передаваемого блока данных Вашего ЗУПВ – 1500 и Вам следует установить как минимум SP4, а затем изменить соответствующим образом реестр. Если вы предпочли бы не рисковать своей Установкой операционной системы с ручным взламыванием реестра, можно попробовать испытательную версию утилиты TweakDUN.

MacOS

Способа ручной настройки MTU на Macintosh пока не обнаружено. К счастью, существует OT испытательной версии утилиты Усовершенствованный Тюнер leavingcisco.com, который есть замечательное сходство к ndd Solaris ниже.

Unix

Другие разновидности Unix делают это по-другому. Служебная программа ifconfig может быть использована (как корневой узел) для изменения MTU интерфейса. С изменением более старого Unix другие параметры обычно требует перекомпиляции ядра. При использовании новых версий Unix значения параметров обычно изменяются во время выполнения при помощи административных утилит. Например, в Solaris 2.2 и более поздних версиях имеется утилита администрирования ndd, тогда как в 4.4BSD и более поздних версиях используется утилита sysctl. Проверьте свои оперативные страницы руководства и/или считайте "Проиллюстрированный TCP/IP, Громкость 1", W. Ричард Стивенс, превосходная книга, которая касается предмета.


Дополнительные сведения


Document ID: 17639