3

Эта проблема

Примечание: сначала я хотел бы понять, ПОЧЕМУ это происходит. Конечно, решение было бы тоже неплохо. :)

При загрузке большого файла по HTTP с высокой скоростью мой беспроводной трафик в основном останавливается: я не могу открыть веб-страницы, а сама загрузка приостанавливается. Это делает паузу в значительной степени сразу после запуска; иногда в 800 КБ, иногда в несколько МБ. Через некоторое время загрузка (и другой трафик) возобновляется, но проблема продолжает возникать во время той же самой загрузки.

Проблема не возникает при использовании проводного соединения через тот же маршрутизатор (Linskys WRT120N). Также обратите внимание, что при этом соединение не прерывается. Просто трафик останавливается, и я не могу просматривать веб-страницы и т.д. (SYN-пакеты отправляются, но ничего не принимается и т.д.)

Проверка с помощью Wireshark показывает, что происходит следующее:

  1. Сервер отправляет пакеты данных, которые подтверждены клиентом
  2. Сервер отправляет пакет, но SEQ указывает, что некоторые пакеты были потеряны (6 пакетов в одном случае).
  3. Сервер отправляет еще несколько пакетов, и клиент подтверждает их, используя "выборочное подтверждение"
  4. Сервер на некоторое время прекращает отправку данных (поскольку потерянные пакеты не были подтверждены или маршрутизатор перестал их пересылать?)
  5. В конце концов, сервер выполняет "повторную передачу", и трафик возобновляется как обычно.

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

Что может вызвать это?

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

Но как это могло случиться? Разве размер окна TCP не ограничивает объем данных, которые могут остаться неподтвержденными? Итак, как может переполниться буфер маршрутизатора, если может быть только 64 КБ, ожидающих подтверждения?

Примечание. Я попытался исправить это, отключив масштабирование окна TCP и динамический размер окна с помощью параметров netsh , но это не имеет значения.

Кроме того, Wireshark показывает шаблон сервера, отправляющего 2 пакета (из 1514 байтов), и клиента, отправляющего ACK, так исключает ли это возможное переполнение буфера? И еще несколько последующих пакетов принимаются ...

Я в недоумении здесь. Спасибо за любые идеи.

Вещи, которые (вероятно) НЕ являются причиной / я экспериментировал с

  • Браузер
  • Различные параметры TCP в Windows 7 (netsh и т.д.)
  • Настройки маршрутизатора, такие как MTU, интервал маяка, UPnP, ...

1 ответ1

3

Решение

Решением было просто отключить поддержку WMM в конфигурации роутера. По-видимому, поддержка Linksys WRT120N WMM не очень хорошо работает с беспроводной связью Windows 7 по некоторым причинам.

Еще немного деталей

Часто, когда возникает проблема, трафик в конечном итоге возобновляется (для того же соединения), как если бы маршрутизаторы были в очереди в течение некоторого времени. Эти паузы обычно длятся 40 секунд или больше. Это все еще озадачивает меня, если честно.

В течение этого времени никакие другие (TCP) соединения не могли быть установлены: при попытке перейти к веб-странице или около того, ноутбук будет отправлять пакеты SYN, но не будет никакого ответа. Тем не менее, DNS - запросы и ARP были обработаны обычным образом .

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