ADSL Hosting Credit
     
   
     
    Новости  
    Мы  
     
   
     
    Dialup-IP (предоплата)  
    Dialup-IP (кредит)  
    Льготы на межгород  
    Мультисервисная сеть  
    ISDN-технология  
    Областная сеть (FR)  
    Хостинг  
    Настройка  
    Бесплатные услуги  
     
   
     
    Мультисервисная сеть  
    Windows 9x  
    Windows NT  
    Linux  
    Internet Explorer 5.x  
    Netscape 4.x  
    The Bat  
    Телефоны и IP-адреса  
     
   
     
    Безопасность  
    FAQ (ЧаВо)  
     V.92/V.44  
    Модемы на плохих АТС  
    Почта и IMAP  
    Интернет/ФИДО news  
    Проблемы MTU/MRU  
    Что такое "СПАМ"  
    Личный кабинет  
     
   
     
    Центртелеком (Курск)  
    Сайты клиентов  
    Поисковые машины  
    Интернет-Курск  
    Вебмастеру  
    Прочее  
     
   
     
    Общая информация  
    SSI  
    CGI  
    Perl  
    PHP  
    MySQL  
    .htaccess  
    log  
    FTP-клиент  
 
 

  Мы поддерживаем V.92!
 
Мониторинг сервера осуществляется системой UpTime.Ru
 
Master Class Webdesign Studio
 
Весь интернет-Курск
 
џндекс цитированиЯ
 
Наши диллеры

 
 

Проблемы MTU/MRU при работе через Dialup-IP (некоторые сайты открываются только через прокси, иногда не работает интернет-телефон, через ICQ не всегда возможна пересылка файлов)

Сложности возникают из-за особенностей реализации TCP-протокола в RAS Windows. Для знакомых с теорией сообщим, что эта OS не учитывает размер MTU, назначаемый при установке связи с провайдером (обычно при работе по Dialup-IP MTU между маршрутизатором провайдера и сервисом RAS клиента не превышает 576 байт).

В опциях протокола TCP есть команда для установки размера MSS (сигнатура 02, размер - 04 октета). При установке связи (открытие сокета) посылается пакет TCP с флагом SYN и этой опцией (в конце пакета сразу за полем "urgent pointer"). Windows пишет (02 04 05 b4) (MSS=1460), для сравнения, Linux пишет (02 04 02 18) (MSS=536). В IP-пакете, в который вложен TCP пакет, в обоих операционках стоит флаг 40 (don't fragment=1).

Удаленный хост отвечает IP с флагом 40 (don't fragment) и вложенным TCP с флагом (SYN+ASK) с опцией MSS (для gazeta.ru - 02 04 05 b4 в обоих операционках).

Некоторые сайты отвечают пакетом IP со сброшенным флагом (don't fragment=0) и/или TCP (SYN+ASK) c опцией (02 04 02 18). С ними проблем не возникает. Например,

  • aport.ru - DF=0, MSS=536
  • sovtest.ru - DF=1, MSS=536
  • max.de - DF=1, MSS=536.

Не отвечающие сайты всегда устанавливают DF=1, MSS=1460.

Для приема пакетов нам не важен размер пакетов, принимаемых удаленным хостом, но если удаленный хост говорит MSS=536, то это значит, что он не поддерживает пакеты с MSS>536 и на передачу.

При возникновении проблем, получив пакет с DF=1 и MSS=1460, который надо фрагментировать для ppp с малым mtu, маршрутизатор провайдера не сможет его фрагментировать (разбить на несколько мелких TCP-пакетов), и уничтожит. При этом удаленному хосту посылается ICMP-сообщение "Fragmentation needed" ("требуется фрагментация") и это сообщение должны пропустить все роутеры к удаленному хосту, а сам удаленный хост должен отреагировать на эту просьбу соответствующим образом (специальный алгоритм).

Т.о. использование ICMP-пакетов в проверках MTU может вызывать проблемы. Все хорошие TCP-реализации используют проверки MTU, чтобы выяснить максимальный размер нефрагментированного пакета, который может принять адресат (фрагментация снижает эффективность, особенно при потере некоторых фрагментов). Проверка MTU осуществляется посылкой пакетов с установленным битом "Don't Fragment". В ответ на эти пакеты может прийти ICMP-ответ "Fragmentation needed but DF set" (необходима фрагментация, но установлен флаг DF). Это пакеты типа "destination unreachable", и если они не получены, локальный хост не будет уменьшать MTU, и эффективность будет крайне низкой или нулевой.

Однако, некоторые маршрутизаторы в интернете не пропускают через себя ICMP-сообщение "Fragmentation needed", а просто уничтожают его. Т.о., если между маршрутизатором провайдера и удаленным хостом не проходят эти ICMP-сообщения, то для клиента становится невозможным принять от такого хоста по протоколу TCP информацию, длиной больше 536 байт.

Windows не знает про MTU=576 (это значение ставит маршрутизатор провайдера, Windows с этим соглашается, но размер MSS остается 1460, т.е. MTU<MSS, а должно быть MTU=MSS+40) и считает, что может принимать пакеты размером до 1460, т.к. посылает эту цифру в TCP-опциях (MSS). Т.е. Windows даже не будет говорить кому-либо по ICMP "fragmentation needed".

Причем, такая проблема возникает только при работе через Dialup-IP без использования прокси-сервера. При работе на выделенной линии MTU клиента обычно 1500 байт. Если работать через прокси, то наш сервер легко сможет принять от удаленного хоста длинный пакет, а затем наш маршрутизатор договорится с нашим сервером о необходимости фрагментации.

 

Решение проблемы в Windows 95

По умолчанию, Win95 использует максимальные значения MTU. MTU и RWIN скрыты в реестре в двух местах. MTU может быть задано для каждого протокола/адаптера, RWIN устанавливается глобально. Для изменения MTU, откройте редактор реестра regedit.exe:

 

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services

\Class\NetTrans\

Найдите то значение 000n, которое является протоколом TCP/IP для Вашего подключения, затем откройте этот 000n. Внутри этого 000n, создайте новый _СТРОКОВЫЙ_ параметр с названием

 

"MaxMTU"

и введите значение. Используемое по умолчанию - 1500 (считается оптимальным для интранет), для интернет оптимальнее использовать значение 576, минимальное значение 552. RWIN для интранет лучше
установить равным 4096, а для интернет - 2048.

 

Решение проблемы в Windows 98

В Windows 98 Microsoft признает важность правильной настройки MTU, но делает это несколько своеобразно. Если в "Панели управления" выбрать значок "Сеть" и просмотреть "Свойства" "Контроллера удаленного доступа", то в открывшемся окне закладки "Дополнительно" можно в расположенном слева списке выбрать опцию "Размер пакета IP" и установить одно из жестко привязанных к определенным величинам MTU обозначений: "Авто", "Малый", "Средний" или "Большой". Малый пакет соответствует величине 576, средний - 1000, а большой - 1500. Если вы зададите опцию "Авто", то Windows будет пытаться сама определять тип соединения и в зависимости от результата подставлять нужный размер пакета. Установить произвольное значение MTU, а также задать свои параметры для RWIN и TTL в Windows 98 можно только через ручную корректировку реестра - процедура та же, что и для Windows 95.

 

Решение проблемы в Windows NT

Для Windows NT решение проблемы опубликовано в MS KB как ошибка, которую обещали устранить еще после SP4. Надо исправить вот эти ключи реестра:

 

HKEY_LOCAL_MACHINE\System\CurrentControlSet\

Services\NdisWan\Parameters

 

Value name: IPMTU

Data type : REG_DWORD

Data range: 1 - 1500 (default is 1500)

Установите IPMTU=576.

 

Value name: TunnelMTU

Data type : REG_DWORD

Data range: 1 - 1500 (default is 1400)

Установите TunnelMTU=476.

 

Решение проблемы в Windows 2000

Добавьте в реестр следующие ключи:

 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
\Services\NdisWan\Parameters\Protocols\0]
"ProtocolType"=dword:00000800
"PPPProtocolType"=dword:00000021
"ProtocolMTU"=dword:00000240
"TunnelMTU"=dword:000001dc
"PacketQueueDepth"=dword:00000080

 

Документация о проблеме на нашем ftp-сервере

На нашем ftp-сервере (ftp.kursknet.ru) Вы можете найти подборку документов о проблеме MTU/MRU, "черных дыр" и т.п. Смотрите все это по адресу ftp://ftp.kursknet.ru/pub/Inet_Speed&FixMTU/DOC!/. Далее по тексту, имена файлов, выделенные жирным курсивом, соответствуют документам из этого архива. Программное обеспечение для управления MTU/MRU/MSS можно найти здесь (в Windows NT не все работает, нашу проблему в NT оно не решит!) ftp://ftp.kursknet.ru/pub/Inet_Speed&FixMTU/.

Устраняется проблема в Windows 9x просто (файл win_95_fix), в Windows NT - весьма нестандартно, ибо у нее свой алгоритм оптимизации MTU/MSS. Для Windows NT решение проблемы опубликовано в MS KB как ошибка (nt_ras_fix!.txt), которую обещали исправить еще после SP4, а пока рекомендовали править реестр. Воз и ныне там...

Советы, которые ничем не помогут для Windows NT, но встречаются в рунете на многих сайтах - win_nt_bug. Рецепты по оптимизации MTU в Windows NT - win_nt_optim (но это лишь оптимизация, которая не решает проблемы с сайтами типа gazeta.ru!). Описание программного обеспечения для оптимизации soft_opt.txt, url_opt_best.txt (тоже не решает проблемы с сайтами типа gazeta.ru в Windows NT!). В файлах mss.txt, mtu.txt - описание MTU и MSS и их особенностей в Windows. black_hole.txt - описание алгоритма борьбы с черными дырами в TCP для Windows NT (но это не наш случай!). Описание проблемы от Linux и Cisco - problem1.txt, cisco_doc1.txt.