Почему при работе в MacOS и Windows соединения замирают, когда на маршрутизаторе используется PPPoE
Мы благодарим Майкла Возняка (Michael Wozniak) mwozniak@netcom.ca>, который сообщил следующую информацию, и Дэна Флемминга (Dan Flemming) danflemming@mac.com> за решение проблемы в случае Mac:
Это происходит из-за эффекта, который можно назвать ``чёрной дырой'' на маршрутизаторе. MacOS и Windows 98 (и, может быть, другие операционные системы от Microsoft), посылают пакеты TCP с запрашиваемым размером сегмента, который слишком велик для того, чтобы быть помещённым в кадр PPPoE (для сети Ethernet размер MTU по умолчанию равен 1500) и с установленным битом ``не фрагментировать'' (по умолчанию для TCP), а маршрутизаторы Telco не посылает пакет ICMP ``нужно фрагментировать'' обратно на сайт www, с которым вы работаете. (Либо маршрутизатор посылает пакеты ICMP правильно, а межсетевой экран на стороне веб-сервера их сбрасывает.) Когда веб-сервер посылает вам кадры, которые не помещаются в поток PPPoE, то маршрутизаторы Telco их отбрасывают и странички не загружаются (часть страниц/графики всё же видно, потому что они меньше, чем MSS). Похоже, что такие настройки действуют по умолчанию на большинстве конфигураций PPPoE Telco (если они вообще знают, как программировать маршрутизатор... да уж...).
Одним из способов исправить это является использование утилиты regedit на машинах 96/98 для того, чтобы добавить в реестр следующий параметр...
HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\Class\NetTrans\0000\MaxMTU
Это должна быть строка со значением ``1436'', так как имеются сведения, что некоторые маршрутизаторы ADSL не могут работать с пакетами размером, превышающим эту величину. В Windows 2000 этот параметр реестра был перенесён в Tcpip\Parameters\Interfaces\ID адаптера\MTU и имеет тип DWORD.
Обратитесь к документам из Microsoft Knowledge Base Q158474 - Windows TCPIP Registry Entries и Q120642 - TCPIP & NBT Configuration Parameters for Windows NT для получения более полной информации по изменению MTU в Windows для работы с NAT-маршрутизатором.
Другим вариантом с Windows 2000 является установка в регистре DWORD-параметра Tcpip\Parameters\Interfaces\ID адаптера\EnablePMTUBHDetect в 1, как это отмечено в документе Microsoft 120642, указанном выше.
К несчастью, в MacOS нет возможности изменить настройки TCP/IP. Однако имеется коммерческое программное обеспечение, такое, как OTAdvancedTuner (OT for OpenTransport, the MacOS TCP/IP stack) компании , которое позволяет пользователям настраивать параметры TCP/IP. Пользователи MacOS NAT должны выбрать ip_interface_MTU из выпадающего меню, ввести число 1450 вместо 1500 в окне, затем щёлкнуть на кнопке, следующей за Save as Auto Configure, и щёлкнуть на Make Active.
В самой последней версии ppp(8) (2.3 и выше) имеется команда enable tcpmssfixup, которая автоматически выравнивает значение MSS к нужному. Эта возможность по умолчанию включена. Если у вас возникли проблемы с более старой версией ppp(8), то вас может заинтересовать порт tcpmssd.