Графики производительности из Windows Performance Monitor показывают, что:

  • Только для всех подключенных к Интернету подключений, за исключением страницы проверки скорости моего интернет-провайдера, количество отправленных сегментов (nsend) - количество полученных сегментов (nrecv) для входящего трафика (загрузок). Для страницы проверки скорости интернет-провайдера nsend ≈ nrecv / 2 для загрузок.

  • Для всех протестированных сетевых подключений nsend ≈ nrecv / (значение TcpAckFrequency, установленное в реестре) для загрузки.

Графики:страница проверки скорости интернет- провайдера Интернет-трафик 1 Интернет-трафик 2 Трафик локальной сети 1 Трафик локальной сети 2

Это означает, что:

  • SACK никогда не использовался.

  • DelAck, настроенный на мои предпочтения, используется только в локальной сети.

  • Каждый пакет ACKed для загрузки через Интернет, за исключением этой страницы провайдера.

Я ожидаю, что для ВСЕХ сетевых подключений, независимо от того, будет ли это Интернет или локальная сеть:

  • nsend ≤ nrecv / TcpAckFrequency для загрузок.

  • В идеале, один и только один ACK должен отправляться только тогда, когда заполнен полный RWIN, в котором получатель сообщает отправителю, что все сегменты были успешно получены.

Я полагаю, что включение SACK и DelAck снижает накладные расходы TCP и, таким образом, повышает пропускную способность, поскольку необходимо отправлять только небольшое количество ACK-пакетов, а вычислительная мощность сохраняется от анализа всех этих посторонних ACK.

Конфигурация ОС:

  • Win7 64bit PC, версия 6.1.7601

  • Realtek PCIe NIC

  • FTTH-подписка 200 Мбит / с с периодическим и резким (от 512 кбит / с до 20 Мбит / с) изменением скорости соединения в международном трафике

  • HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\SackOpts = 1

  • HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Tcp1323Opts = 2

  • HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\GUID\TcpAckFrequency = 4 // также пробовал 2 и 6

  • HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\GUID\TcpDelAckTicks = 3 // RTT обычно составляет от 70 до 150 мс для интернет-трафика, поэтому я добавил 100 мс к значению ОС по умолчанию, так что задержка подтверждения может работать лучше, не слишком сильно влияя на начальные значения RWIN

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\GUID\TcpNoDelay = 1

  • Масштабирование на стороне приема и автонастройка RWIN также включаются с помощью утилиты NETSH.

0