1

У меня странный сценарий ограниченного подключения с моим сетевым стеком Linux. Проблема в том, что всякий раз, когда я пытаюсь что-то загрузить, я могу получить только первые 5,5 КБ запрошенного ресурса, как с моей сетевой картой (Realtek 8139), так и с помощью своей беспроводной карты (IPW2200). Например:

  • wget google.it => Я получу полную страницу index.html (ее размер составляет 4,9 КБ)
  • wget google.it/intl/it_it/images/logo.gif => Я получу первые 5,5 КБ изображения, и wget будет зависать, ожидая оставшуюся часть изображения бесконечно
  • захват HTTP-разговора с www.polito.it (6) (как вы можете видеть из этого захвата, дальнейшие запросы не отправляются, даже если на странице отсутствуют некоторые элементы)

Окружающая среда и инструменты:

  • Я пытаюсь просмотреть страницы через ссылки Firefox и командной строки, как из моей локальной установки, так и с Live CD
  • в Windows обе сетевые карты работают без проблем (я сейчас пишу с двойной загрузкой Windows)
  • эта проблема возникает в каждом дистрибутиве Linux, который я пробовал (у каждого с разными ядрами): ArchLinux, Live ArchLinux 2007.08, grml 2008, grml 2009.10

Вот моя конфигурация Linux:

  • ядро обнаруживает карту (модуль 8139too или ipw2200) и назначает ей хороший IRQ
  • DHCP-сервер (на 192.168.1.1) правильно назначает IP 192.168.1.2 моему сетевому интерфейсу. Пример ethernet один:

    eth0 Link encap:Ethernet HWaddr 00:c0: 9f: be: 77: da
    inet addr: 192.168.1.2 Bcast: 192.168.1.255 Маска: 255.255.255.0 inet6 адрес: fe80:: 2c0: 9fff: febe: 77da/64 Область действия: соединение UP BROADCAST RUNNING MULTICAST MTU: 1500 Метрика: 1 пакеты RX: 478 ошибок: 0 отброшено: 0 переполнений: 0 кадр: 0 пакетов TX: 322 ошибки: 0 отброшено: 0 переполнений: 0 несущая: 0 коллизий: 0 txqueuelen: 1000 байтов RX: 163064 (159,2 КиБ) Байт TX: 40610 (39,6 КиБ) Прерывание: 16 Базовый адрес: 0xc000

  • MTU установлен на 1500, но даже при меньших значениях проблема все еще существует (я пробовал значения 1492, 1454, 1000, 500)

  • разрешение DNS работает хорошо
  • пинг с других хостов в сети /интернете в порядке:

    PING www.l.google.com (74.125.43.104) 56 (84) байт данных. 64 байта из bw-in-f104.1e100.net (74.125.43.104): icmp_seq = 1 ttl = 50 раз = 52,1 мс 64 байта из bw-in-f104.1e100.net (74.125.43.104): icmp_seq = 2 ttl = 50 раз = 50,9 мс

  • нет времени ожидания /полных буферов приема /необработанных сообщений IRQ, указанных ядром

У меня нет других идей о том, почему это происходит ... Помимо этого, эта проблема воспроизводима, и для любой веб-страницы она перестает загружаться после заданной суммы.

2 ответа2

2

Я обнаружил проблему: мой шлюз неправильно обрабатывает масштабирование окна TCP. Поэтому я дал указание своему ядру Linux не использовать эту функцию, и теперь соединение работает нормально.

Для вашего сведения, вот мой патч в конфигурации сети. В /etc/sysctl.conf я добавил следующие строки:

net.ipv4.tcp_window_scaling=0
net.ipv4.tcp_ecn=0

И это была идентификация моего роутера: «Alice Gate 2 Plus Wi-Fi» с версией прошивки «AGIA_1.2.0»

0

Если, как вы говорите, он работает на Windows нормально, и у вас возникают проблемы в различных дистрибутивах Linux, возможно, драйвер Linux просто плохой.

Я лично подам отчет об ошибке или посмотрю, можно ли найти другую версию драйвера.

Кроме того, я немного запутался в одном вопросе -

Я пытаюсь просмотреть страницы через ссылки Firefox и командной строки, как из моей локальной установки, так и с Live CD

Вы говорите, что пытались, и это работает или не удается?

Если работает, попробуйте скопировать драйвер с live CD. Если это не удастся, вам может не повезти.

Ни в коем случае не нужно вручную возиться с MTU или другими техническими элементами ... Я всегда говорю, что такие вещи есть, так что вы можете точно настроить его, как только вы знаете, что он уже работает (так что вы знаете, к чему вернуться, если есть ошибка!), Но если он не работает по умолчанию, это какая-то другая ошибка, которую вы должны посмотреть в первую очередь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .