.png)
Проблема
Примечание: Сначала я хотел бы понять, ПОЧЕМУ это происходит. Конечно, решение тоже было бы неплохо. :)
При загрузке большого файла по HTTP на высокой скорости мой беспроводной трафик фактически останавливается: я не могу открыть веб-страницы, а сама загрузка останавливается. Она останавливается практически сразу после начала; иногда на 800 КБ, иногда на нескольких МБ. Через некоторое время загрузка (и другой трафик) возобновляется, но проблема продолжает возникать во время той же загрузки.
Проблема не возникает при использовании проводного соединения через тот же роутер (Linskys WRT120N). Также обратите внимание, что соединениенеткогда это происходит, он отваливается. Просто трафик останавливается, и я не могу просматривать веб-страницы и т. д. (SYN-пакеты отправляются, но ничего не получается и т. д.)
Проверка с помощью Wireshark показывает, что происходит следующее:
- Сервер отправляет пакеты данных, которые подтверждаются клиентом.
- Сервер отправляет пакет, но SEQ указывает на то, что некоторые пакеты были потеряны (6 пакетов за один раз).
- Сервер отправляет еще несколько пакетов, а клиент подтверждает их с помощью «выборочного подтверждения».
- Сервер на некоторое время прекращает отправку данных (поскольку потерянные пакеты не были подтверждены)илимаршрутизатор перестает их пересылать?)
- В конце концов сервер выполняет «повторную передачу», и трафик возобновляется в обычном режиме.
Мне кажется, что это нормальное поведение при потере пакетов.Меня озадачивает постоянная потеря пакетов во время большой высокоскоростной загрузки.
Что может быть причиной этого?
Моя собственная идея такова: у меня довольно быстрый интернет (100 Мбит/с), поэтому при запуске загрузки большого файла маршрутизатор буферизует входящие данные (поскольку беспроводное соединение вносит небольшую задержку/более низкую скорость, отчасти из-за других сетей), но буфер переполняется, и маршрутизатор сбрасывает пакеты, чтобы урегулировать трафик (и потому что у него нет выбора).
Но как это могло произойти? Разве размер окна TCP не ограничивает объем данных, которые могут остаться неподтвержденными? Так как же буфер маршрутизатора может переполниться, если подтверждения может ожидать только около 64 КБ?
Примечание:Я отключил масштабирование окна TCP и динамический размер окна в netsh
настройках, пытаясь исправить это, но, похоже, это не имеет значения.
Также,Wireshark показывает схему отправки сервером 2 пакетов (по 1514 байт) и отправку клиентом ACK, исключает ли это возможное переполнение буфера? И еще несколько последующих пакетовявляютсяполученный...
Я в растерянности. Спасибо за любые идеи.
Вещи, которые (вероятно) НЕ являются причиной / Я экспериментировал с
- Браузер
- Различные параметры TCP в Windows 7 (
netsh
и т.д.) - Настройки маршрутизатора, такие как MTU, интервал маяка, UPnP, ...
решение1
Решение
Решение было простоеотключить поддержку WMMв конфигурации маршрутизатора. Видимо, поддержка Linksys WRT120N WMM по какой-то причине не очень хорошо работает с беспроводной связью Windows 7.
Еще немного подробностей
Часто, когда возникала проблема, трафик в конечном итоге возобновлялся (для того же соединения), как будто пакеты были поставлены маршрутизатором в очередь на некоторое время. Эти паузы обычно длились 40 секунд или больше. Это все еще озадачивает меня, если честно.
В это время не могли быть установлены никакие другие (TCP) соединения: при попытке просмотра веб-страницы или около того, ноутбук отправлял пакеты SYN, но не получал ответа. Однако запросы DNS и ARPбылиобрабатывается в обычном режиме.