У меня странная ситуация с ПК с Windows 7 Home Premium, который показывает ограниченную скорость передачи данных по Интернету без видимой причины.

Настройка:

  • внутренняя гигабитная локальная сеть, за маршрутизатором TP-Link WDR3600, работающим под управлением DD-WRT
  • подключение к интернету по оптоволокну со скоростью загрузки 100 Мбит / с, загрузкой 8 Мбит / с
  • ПК с Windows 7 Home Premium, подключенный через проводной интерфейс (гигабитный)
  • Virtualbox Linux гостевая виртуальная машина, работающая на ПК с Windows
  • У виртуальной машины есть сетевой интерфейс, соединенный с интерфейсом проводного хоста, и IP-адрес локальной сети
  • в той же локальной сети есть NAS, обеспечивающий файлы по HTTP (гигабитный)
  • нет настройки HTTP-прокси в Windows, в меню настроек локальной сети в Windows отключено "автоматическое определение настроек"
  • QoS отключен в роутере
  • все тесты выполняются через гигабитный Ethernet

Факты:

  • Скорость передачи из Интернета не превышает 20 Мбит / с на ПК с Windows, несмотря на то, что интернет-соединение не насыщено.
  • Точно такая же загрузка через Интернет с виртуальной машины Linux достигает предела соединения 100 Мбит / с без проблем. Это верно, когда загрузка передается в / dev / null, но также и когда она записывается на диск
  • Загрузка файла с NAS на ПК под управлением Windows по протоколу HTTP обеспечивает скорость передачи ~ 600 Мбит / с
  • MTU в Windows и Linux одинаков
  • Попытка отключения большой разгрузки сегмента на проводном сетевом интерфейсе (Windows), без эффекта
  • Переключение между Firefox, Chrome и IE без изменений в результатах
  • Speedtest.net в Windows достигает скорости передачи 100/8

Некоторые отброшенные гипотезы:

  • не проблема с аппаратным обеспечением, поскольку виртуальная машина Linux может быстро загружаться с использованием того же интерфейса, а загрузка по локальной сети также работает нормально
  • не проблема роутера, загрузка ВМ быстрая
  • не проблема подключения к интернету, загрузка виртуальных машин происходит быстро
  • не ограничение скорости диска, загрузка ВМ на диск происходит быстро
  • не проблема браузера
  • не проблема фрагментации, MTU одинаково в Windows и VM

Некоторые возможности:

  • Ограничение стека Windows TCP или конфигурация, связанная с HTTP

Есть идеи, что здесь происходит? Почему Windows не занимает всю пропускную способность?

2 ответа2

0

Проблема с медленной скоростью загрузки в Windows 7 и Windows Server 2008 R2 связана с ошибкой в стеке TCP/IP. Если между местоположением A и местоположением B у вас очень низкая задержка (1-8 мс), вы заметите, что скорость загрузки ниже нормальной. Примените KB2675785 от Microsoft https://support.microsoft.com/en-us/kb/2675785, чтобы решить эту проблему.

0

Что ж, после некоторого расследования возникла проблема с масштабированием окна приема TCP для Windows 7.

Это были мои первоначальные настройки TCP:

C:\Windows\system32>netsh interface tcp show global
Querying active state...

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State          : disabled
Chimney Offload State               : automatic
NetDMA State                        : enabled
Direct Cache Acess (DCA)            : disabled
Receive Window Auto-Tuning Level    : disabled
Add-On Congestion Control Provider  : none
ECN Capability                      : disabled
RFC 1323 Timestamps                 : disabled
** The above autotuninglevel setting is the result of Windows Scaling heuristics
overriding any local/policy configuration on at least one profile.


C:\Windows\system32>netsh interface tcp show heuristics
TCP Window Scaling heuristics Parameters
----------------------------------------------
Window Scaling heuristics         : enabled
Qualifying Destination Threshold  : 3
Profile type unknown              : normal
Profile type public               : normal
Profile type private              : restricted
Profile type domain               : normal

Мое подключение к Ethernet классифицируется как "домашняя" сеть, которая, по-видимому, попадает в категорию "Частный тип профиля" в выводе эвристики.

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

Таким образом я сделал:

# disable heuristics
C:\Windows\system32>netsh interface tcp set heuristics wsh=disabled
Ok.

# enable receive-side scaling
C:\Windows\system32>netsh int tcp set global rss=enabled
Ok.

# manually set autotuning profile
C:\Windows\system32>netsh interface tcp set global autotuning=experimental
Ok.

# set congestion provider
C:\Windows\system32>netsh interface tcp set global congestionprovider=ctcp
Ok.

C:\Windows\system32>netsh interface tcp show global
Querying active state...

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State          : enabled
Chimney Offload State               : automatic
NetDMA State                        : enabled
Direct Cache Acess (DCA)            : disabled
Receive Window Auto-Tuning Level    : experimental
Add-On Congestion Control Provider  : ctcp
ECN Capability                      : disabled
RFC 1323 Timestamps                 : disabled

После изменения этих настроек загрузка снова происходит быстро, достигнув предела интернет-соединения.

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