Сетевые средства MS Windows

Настройка IP MTU, TCP MSS и PMTUD на Windows и Sun Systems

22 сентября 2010 - Перевод, выполненный профессиональным переводчиком
Другие версии: PDF-версия:pdf | Машинный перевод (28 июля 2013) | Английский (10 августа 2005) | Отзыв

Содержание

Введение
Предварительные условия
      Требования
      Используемые компоненты
      Условные обозначения
Общие сведения
Описание проблемы и возможные причины
      Значение TCP MSS
      Отказ PMTUD
      Различные типы сред локальных сетей
      Топология сети Dumbbell
      Дефектные соединения
Отключение PMTUD и настройка меньшего значения MTU/MSS на конечном узле
      Solaris 10 (и предыдущие версии)
      HP-UX 9.x, 10.x и 11.x
      IBM AIX Unix
      Linux
      Windows 95/98/ME
      Windows NT 3.1/3.51
      Windows NT 4.0
      Windows 2000/XP
Связанные обсуждения сообщества поддержки Cisco
Дополнительные сведения

Введение

Данный документ содержит примеры конфигурации узлов с целью настройки максимального размера передаваемого блока данных IP (MTU), максимального размера сегмента TCP (MSS) и IP Path MTU Discovery (PMTUD) в Solaris 10 (и предыдущих версиях), HP-UX 9.x, 10.x, 11.x, IBM AIX, Linux, Windows 95/98/ME, Windows NT 3.1/3.51, Windows NT 4.0 и Windows 2000/XP.

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

Требования

Для использования данного документа требуется знание следующих тем:

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

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

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

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

Общие сведения

Из-за неполадок сетевого оборудования, неверной конфигурации или ошибок программного обеспечения может возникнуть ситуация, когда передачи небольшого объема данных TCP функционируют без проблем. Однако передачи больших объемов данных (с пакетами полной длины) зависают, а по истечении времени ожидания сбрасываются. Решение этой проблемы состоит в настройке отправляющих узлов для выполнения одного или обоих следующих действий:

  • Отключение PMTUD.

  • Уменьшение TCP MSS и/или IP MTU с целью уменьшения максимального размера пакета.

Описание проблемы и возможные причины

Иногда по некоторым IP-маршрутам узел TCP/IP отправляет небольшие объемы данных (как правило меньше 1500 байт) без проблем, но при попытках передачи данных большего объема происходит зависание и сброс по истечении времени ожидания. Во многих случаях такая проблема возникает только при передаче в одном направлении, т.е. передача большого объема данных выполняется в одном направлении, но не выполняется в обратном направлении. Эта проблема, вероятно, вызвана значением TCP MSS, ошибкой PMTUD, различными типами сред локальных сетей или неисправными каналами. Эти проблемы описаны в следующих подразделах:

Значение TCP MSS

Значение TCP MSS определяет максимальный объем данных TCP в одной IP-дейтаграмме, которую может принять (собрать) локальная система. IP-дейтаграмма может быть разбита при пересылке на несколько пакетов. Теоретически, это значение может достигать 65495, но такое большое значение никогда не используется. Как правило оконечная система использует "значение MTU исходящего интерфейса" минус 40 в качестве собственного передаваемого MSS. Например, значение Ethernet MSS равно 1460 (1500 - 40 = 1460).

Отказ PMTUD

PMTUD — это алгоритм, описанный в документе RFC 1191 leavingcisco.com и реализованный в последних стеках TCP/IP. Этот алгоритм пытается обнаружить самую большую IP-дейтаграмму, которую можно послать без фрагментации по IP-маршруту, и увеличивает пропускную способность передачи данных.

PMTUD реализуется, когда отправитель IP устанавливает флаг "не фрагментировать" (DF) в заголовке IP. Если IP-пакет с этим установленным флагом достигает маршрутизатора, у которого канал на следующем прыжке имеет слишком маленькое значение MTU для отправки пакета без фрагментации, этот маршрутизатор отбрасывает такой пакет и отправляет ICMP сообщение об ошибке "Fragmentation needed but DF set" (Необходима фрагментация, но установлен флаг DF) отправителю IP-пакета. Когда отправитель IP-пакета получает сообщение по протоколу управляющих сообщений в Интернете (ICMP), ему необходимо выбрать меньший IP MTU для пакетов, отправляемых этому получателю, после чего последующие пакеты должны передаваться с этим MTU.

Различные проблемы могут привести к отказу алгоритма PMTUD. В этом случае отправитель IP-пакета никогда не получит меньшее MTU пути и будет продолжать попытки передачи слишком большого пакета до тех пор, пока не истечет время ретрансляции. К таким проблемам относятся:

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

  • Маршрутизатор на обратном пути между маршрутизатором с маленьким MTU и отправителем IP-пакета отбрасывает сообщение ICMP об ошибке перед тем, как оно попадет к отправителю IP-пакета.

  • Конфликт в стеке отправителя IP-пакета, в котором игнорируется полученное сообщение ICMP об ошибке.

Эти неполадки можно устранить, отключив PMTUD в настройках отправителя IP-пакетов. Это заставляет отправителя IP-пакета отправлять дейтаграммы при снятом флаге DF. Если пакет большого размера достигает маршрутизатора с маленьким MTU, маршрутизатор фрагментирует пакет на несколько пакетов меньшего размера. Фрагментированные данные достигают пункта назначения, где из них снова собирают исходный пакет большого размера.

Различные типы сред локальных сетей

Работа двух узлов сети с одинаковой маршрутизацией, но различными типами сред локальных сетей (Ethernet в отличие от Token Ring и распределенного интерфейса передачи данных по волоконно-оптическим каналам (FDDI) может отличаться. Системы, подключенные к Ethernet, могут работать правильно, в то время как в системах, подключенных к Token Ring и FDDI, произойдет сбой. Причина этого сбоя заключается в том, что система Ethernet передает значение MSS равное 1460, тогда как системы, подключенные к Token Ring и FDDI, передают значение MSS равное приблизительно 4400. Поскольку удаленный сервер не может использовать значение больше значения MSS, передаваемого с другого конца, он может передавать пакеты меньшего размера при обмене данными с системой, подключенной к Ethernet, по сравнению с размером пакетов, передаваемых при обмене данными с системой, подключенной к Token Ring и FDDI.

Топология сети Dumbbell

Проблемы PMTUD часто появляются в сетевой топологии "dumbbell" (например, в топологии, в которой MTU внутреннего канала сетевого пути меньше, чем у интерфейсов взаимодействующих с ним узлов). Например, при использовании IP-туннеля (общая инкапсуляция маршрутов (GRE) MTU интерфейса туннеля меньше MTU соответствующего физического интерфейса. В случае отказа PMTUD из-за фильтрации ICMP или проблем в стеке узла, пакеты большого размера не удастся передать через туннель. Чтобы обойти эту проблему в выпусках ПО Cisco IOS с ошибкой (идентификатор ошибки Cisco CSCdk15279 (только для зарегистрированных пользователей) увеличьте IP MTU туннеля до 1500 байт.

Дефектные соединения

Иногда у маршрутизатора бывает канал связи с большим (1500 байт) MTU, но маршрутизатор неспособен передавать дейтаграмму такого размера по этому каналу. Этот маршрутизатор не вернет отправителю сообщение ICMP об ошибке "Необходима фрагментация, но установлен DF", потому что у канала на самом деле не маленькое значение MTU. Однако дейтаграммы большого размера не могут передаваться по этому каналу. Поэтому алгоритм PMTUD бесполезен и все попытки передать большой пакет через этот канал будут неуспешными.

Иногда это может быть вызвано неполадкой канала на более низком уровне, например при использовании контура Frame Relay с очень маленьким MTU и недостаточной буферизацией, неисправного сервера канальных данных (CSU/DSU) или повторителя, бракованного кабеля, при ошибке программного обеспечения или микропрограммы.

Ниже приведен список соответствующих дефектов ПО.

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

Отключение PMTUD и настройка меньшего значения MTU/MSS на конечном узле

В этих примерах задается значение IP MTU равное 1500 или TCP MSS равное 1460 для ОС Solaris 10 (и предыдущие версии), HP-UX 9.x, 10.x и 11.x, IBM AIX, Linux, Windows 95/98/ME, Windows NT 3.1/3.51, Windows NT 4.0 и Windows 2000/XP. Задание значения IP MTU равного 1500 и TCP MSS равного 1460 в общем случае дает одинаковый эффект, поскольку сегмент TCP, как правило, передается в 40 байтах заголовка IP/TCP.

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

Solaris 10 (и предыдущие версии)

Отключение PMTUD:

$ ndd -set /dev/ip ip_path_mtu_discovery 0

Установите для максимального размера сегмента (MSS) значение 1460:

$ ndd -set /dev/tcp tcp_mss_max 1460

Источник: Иллюстрированный TCP/IP: Протоколы, том 1, приложение E, У. Ричард Стивенс и Гарри Р. Райт.

HP-UX 9.x, 10.x и 11.x

Отключение PMTUD:

HP-UX 9.X не поддерживает алгоритм Path MTU discovery.

HP-UX 10.00, 10.01, 10.10, 10.20 и 10.30 поддерживают алгоритм Path MTU discovery. Включен (1) по умолчанию для TCP и отключен (0) по умолчанию для UDP. Включение и отключение при помощи команды nettune.

# nettune -s tcp_pmtu 0
   
# nettune -s udp_pmtu 0

HP-UX 11 поддерживает алгоритм Path MTU discovery и включает его по умолчанию. Включение и отключение при помощи команды ndd setting ip_pmtu_strategy.

# ndd -h ip_pmtu_strategy 0

Задайте стратегию для алгоритма Path MTU Discovery: 0 — Path MTU Discovery отключен; 1 — включена стратегия 1; 2 — включена стратегия 2. Для получения дополнительной информации выполните команду ndd -h на системе HP-UX 11.

Источник: Hewlett Packard leavingcisco.com

Установите для максимального размера сегмента (MSS) значение 1460:

HP-UX 10.x:

# lanadmin -M 1460 <NetMgmtID> 
/usr/sbin/lanadmin [-a] [-A station_addr] [-m] [-M mtu_size] 
[-R] [-s] [-S speed] NetMgmtID -M mtu_size

Задайте новый размер MTU для интерфейса, соответствующий NetMgmtID. Значение mtu_size должно входить в обозначенный диапазон канала, а пользователь должен иметь привилегии суперпользователя.

Источник: Главная страница для HP-UX в версии 10.2

HP-UX 11.x:

# ndd -set /dev/tcp tcp_mss_max 1460

Дополнительную информацию см. на главной странице для ndd в системе HP-UX 11.

IBM AIX Unix

Отключение PMTUD:

Path MTU Discovery был добавлен в AIX 4.2.1, по умолчанию отключен. Начиная с версии AIX 4.3.3 по умолчанию включен.

# no -o tcp_pmtu_discover=0

Источник: IBM leavingcisco.com

Задайте максимальный MSS:

Для AIX 4.2.1 и более поздних, tcp_mssdflt используется только если алгоритм path MTU discovery не включен или path MTU discovery не удалось определить MTU для пути. По умолчанию: 512 байт; диапазон: от 1 до 1448.

# no -o tcp_mssdflt=1440

Если используется несколько адаптеров с различными размерами MTU, можно задать только одно значение. Это изменение является изменением в масштабе всей системы.

Источник: IBM leavingcisco.com

Linux

Отключение PMTUD:

Path MTU Discovery можно включить или отключить изменением содержимого файла ip_no_pmtu_disc, задав '0' или '1' соответственно. Чтобы отключить PMTUD, выполните команду:

# echo  1  >/proc/sys/net/ipv4/ip_no_pmtu_disc

Задание MTU интерфейса:

Значение MTU интерфейса можно изменить путем изменения параметра 'MTU' в файле ifcfg-<имя>, где <имя> соответствует имени устройства, параметры которого определяет этот файл конфигурации. Например, чтобы изменить конфигурацию для интерфейса Ethernet измените содержимое файла с именем 'ifcfg-eth0'. Этот файл определяет параметры первой сетевой интерфейсной платы (NIC) в системе.

Источник: Руководство по RedHat Linux leavingcisco.com

Windows 95/98/ME

Примечание. Изменение параметров TCP/IP в ОС Windows 95 связано с редактированием реестра. Эту операцию должен выполнять только опытный системный администратор, поскольку ошибки могут привести к невозможности загрузки системы. После внесения изменений в реестр, перезагрузите компьютер для вступления в силу изменений.

Отключение PMTUD:

Добавьте это значение реестра в следующий раздел:

Hkey_Local_Machine\System\CurrentControlSet\Services\VxD\MSTCP
 
PMTUDiscovery = 0 or 1 
 
Data Type: DWORD

Это значение определяет будет Microsoft TCP/IP пытаться определить MTU для пути как указано в документе RFC 1191 leavingcisco.com. Задание "1" включает алгоритм, а "0" — отключает. По умолчанию 1.

Примечание. В ОС Windows 98 типом данных является строковое значение.

Установите для максимального размера передаваемого блока данных (MTU) интерфейса значение 1500:

Записи в этом разделе должны быть добавлены в следующий раздел реестра, где "n" представляет определенную привязку "TCP/IP-сетевой адаптер".

Hkey_Local_Machine\System\CurrentControlSet\Services\Class\netTrans\000n
 
MaxMTU = 16-bit integer
 
Data Type: String

Этот раздел реестра определяет максимальный размер IP-дейтаграммы, которую можно передать драйверу среды. Протокол доступа к подсети Subnetwork Access Protocol (SNAP) и заголовки маршрутизации источника (если используются в среде) не включены в это значение. Например для сети Ethernet значение MaxMTU по умолчанию равно 1500. Фактическое используемое значение — это минимальное значение заданное этим параметром и размер, переданный драйвером среды. По умолчанию берется размер, переданный драйвером среды.

Источник: Статья базы знаний Майкрософт Q158474 leavingcisco.com

Windows NT 3.1/3.51

Примечание. Изменение параметров TCP/IP в ОС Windows NT связано с редактированием реестра. Эту операцию должен выполнять только опытный системный администратор, поскольку ошибки могут привести к невозможности загрузки системы. После внесения изменений в реестр, перезагрузите компьютер для вступления в силу изменений.

Отключение PMTUD:

Определение MTU для пути по умолчанию включено, но эту настройку можно изменять, добавляя в реестр соответствующее значение:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip\parameters
\EnablePMTUDiscovery
 
PMTU Discovery:  0 or 1 (Default = 1)
 
Data Type:   DWORD

Задание "1" включает алгоритм, а "0" — отключает. Если определение MTU для пути отключено, для всех нелокальных IP-адресов назначения используется значение MTU равное 576 байт. Значение TCP MSS равно 536.

Источник: Статья базы знаний Майкрософт Q136970 leavingcisco.com

Установите для максимального размера передаваемого блока данных (MTU) интерфейса значение 1500:

Эти параметры TCP/IP устанавливаются в зависимости от конкретных сетевых адаптеров. Они отображаются в следующем пути реестра, где "adapterID" относится к подразделу Services для определенного сетевого адаптера:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\adapterID\Parameters\Tcpip
 
MTU: REG_DWORD (Number in octets)
 
Default: 0 (That is, use the value supplied by the adapter.)

Это значение определяет размер MTU интерфейса. Каждому интерфейсу, который используется TCP/IP, может быть задано собственное значение MTU. Значение MTU, как правило, определяется в процессе согласования с драйвером более низкого уровня. Однако использование значения драйверов более низкого уровня может быть переопределено.

RouterMTU REG_DWORD Number in octets
 
Default: 0 (That is, use the value supplied by the lower interface.)

Это значение определяет размер MTU, который следует использовать, когда IP-адрес указывает место назначения в другой подсети. Каждому интерфейсу, который используется TCP/IP, может быть задано собственное значение RouterMTU. Во многих реализациях задается значение 576 октетов для RouterMTU. Это минимальный размер, который должен поддерживать IP-узел. Поскольку более новые маршрутизаторы, как правило, работают с MTU большего размера чем 576 октетов, значением по умолчанию для этого параметра служит значение, используемое MTU.

Источник: Статья базы знаний Майкрософт Q102973 leavingcisco.com

Windows NT 4.0

Примечание. Изменение параметров TCP/IP в ОС Windows NT связано с редактированием реестра. Эту операцию должен выполнять только опытный системный администратор, поскольку ошибки могут привести к невозможности загрузки системы. После внесения изменений в реестр, перезагрузите компьютер для вступления в силу изменений.

Отключение PMTUD:

Определение MTU для пути по умолчанию включено, но эту настройку можно изменять, добавляя в реестр соответствующее значение:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
\EnablePMTUDiscovery 
 
PMTU Discovery: 0 or 1 (Default = 1) 
 
Data Type:  DWORD

Задание "1" включает алгоритм, а "0" — отключает. Если определение MTU для пути отключено, для всех нелокальных IP-адресов назначения используется значение MTU равное 576 байт. Значение TCP MSS равно 536.

Если этому параметру задано значение 1 (True), протокол TCP пытается определить максимальный размер передаваемого блока данных (MTU или наибольший размер пакета) на пути к удаленному узлу. Определение MTU для пути и ограничение сегментов TCP этим размером позволяет TCP обойтись без фрагментации на маршрутизаторах вдоль пути, соединяющего сети с различными MTU. Фрагментация уменьшает пропускную способность TCP и увеличивает перегрузку сети.

Установите для максимального размера передаваемого блока данных (MTU) интерфейса значение 1500:

Эти параметры TCP/IP устанавливаются в зависимости от конкретных сетевых адаптеров. Они отображаются в следующем пути реестра, где "adapterID" относится к подразделу Services для определенного сетевого адаптера:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\AdapterID\Tcpip\Parameters
 
MTU: Set it to equal the required MTU size in decimal (default 1500)
 
Data Type: DWORD

Этот параметр замещает установленный по умолчанию размер MTU для сетевого интерфейса. MTU – это максимальный размер пакета в байтах, который может быть передан транспортным протоколом по используемой сети. Размер включает заголовок транспорта. IP-дейтаграмма может охватывать множество пакетов. В случае превышения значения по умолчанию для нижележащей сети транспорт использует MTU по умолчанию для сети. Если указано значение меньше 68, то транспорт использует MTU равное 68.

Источник: Статья базы знаний Майкрософт Q120642 leavingcisco.com

Windows 2000/XP

Примечание. Изменение параметров TCP/IP в ОС Windows NT связано с редактированием реестра. Эту операцию должен выполнять только опытный системный администратор, поскольку ошибки могут привести к невозможности загрузки системы. После внесения изменений в реестр, перезагрузите компьютер для вступления в силу изменений.

Отключение PMTUD:

Определение MTU для пути по умолчанию включено, но эту настройку можно изменять, добавляя в реестр соответствующее значение:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
\EnablePMTUDiscovery
  
PMTU Discovery:  0 or 1 (Default = 1)
 
Data Type:  DWORD

Задание "1" включает алгоритм, а "0" — отключает. Если определение MTU для пути отключено, для всех нелокальных IP-адресов назначения используется значение MTU равное 576 байт. Значение TCP MSS равно 536.

Если этому параметру задано значение 1 (True), протокол TCP пытается определить максимальный размер передаваемого блока данных (MTU или наибольший размер пакета) на пути к удаленному узлу. Определение MTU для пути и ограничение сегментов TCP этим размером позволяет TCP обойтись без фрагментации на маршрутизаторах вдоль пути, соединяющего сети с различными MTU. Фрагментация уменьшает пропускную способность TCP и увеличивает перегрузку сети.

Установите для максимального размера передаваемого блока данных (MTU) интерфейса значение 1500:

Эти параметры TCP/IP устанавливаются в зависимости от конкретных сетевых адаптеров. Они отображаются в следующем пути реестра, где "adapterID" относится к подразделу Services для определенного сетевого адаптера:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\ 
Interfaces\[Adapter ID] 
 
MTU: Set it to equal the required MTU size in decimal (default 1500)
 
Data Type:  DWORD

Этот параметр замещает установленный по умолчанию размер MTU для сетевого интерфейса. MTU – это максимальный размер пакета в байтах, который может быть передан транспортным протоколом по используемой сети. Размер включает заголовок транспорта. Учтите, что IP-дейтаграмма может охватывать множество пакетов. В случае превышения значения по умолчанию для нижележащей сети транспорт использует MTU по умолчанию для сети. Если указано значение меньше 68, то транспорт использует MTU равное 68.

Источник: Статья базы знаний Майкрософт Q314053 leavingcisco.com


Связанные обсуждения сообщества поддержки Cisco

В рамках сообщества поддержки Cisco можно задавать и отвечать на вопросы, обмениваться рекомендациями и совместно работать со своими коллегами.


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


Document ID: 13709