TCP Selective ACK (SACK) никогда не работает, а Delayed ACK (DelAck) только изредка работает на входящем трафике, но ОС настроена для поддержки обоих

377
user786008

Графики производительности из 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
Получает ли тот же хост, который иногда в «международном трафике» только 512 кбит / с, вас в разы быстрее? Какую проблему вы на самом деле пытаетесь решить, применяя эти настройки? Seth 6 лет назад 0
@ Сидит Да. Интернет-провайдер велел целому городу «наслаждаться» оптоволоконным DSL в течение 2 лет, и все от 8 до 80 подписались, потому что интернет-провайдер говорит, что он даст вам 100 МБ / с. Производительность международных соединений ухудшилась из-за слишком большого числа пользователей, настолько сильных, что время от времени происходят сбросы пакетов, и ISP, похоже, ограничивает распределение полосы пропускания, чтобы заставить нас чувствовать себя не так уж плохо, вызывая "случайную" нерегулярную пропускную способность и скорость отбрасывания пакетов. Я думаю, что было бы разумно уменьшить количество ACK, которые необходимо отправить, чтобы избавиться от отбрасывания пакетов, в дополнение к другим твикам, таким как RWIN и RTO. user786008 6 лет назад 0
С этим предположением разве вы не потеряли бы больше пакетов? В конце концов, вы будете часто только ACK. Если у вашего провайдера плохие сверстники, вы мало что можете сделать. Издержки для TCP ACK незначительны для большинства приложений. Вы говорили с вашим провайдером о проблеме? Что вы делаете, чтобы заметить эти проблемы? Seth 6 лет назад 0
Я учел твои сомнения, но я думаю, что это, на самом деле, игра. (а) думая, что чем больше отправлено ACK, тем больше вероятность отбрасывания пакета ACK, тем более вероятна повторная передача уже ACKed сегментов и тем больше ненужного беспорядка, и (б) думая, что чем больше ACK отправлено, тем больше вероятность того, что другая сторона доставит потерянные пакеты вовремя, поэтому лучшую скорость вы получите. Поскольку поведение по умолчанию относится к (b), я бы попробовал проверить, работает ли (a) лучше. Интернет-провайдер только что сказал, что они работают только для поддержания пропускной способности "по всему городу" с указанной скоростью. Я проверял результаты настройки и попал в это user786008 6 лет назад 0

0 ответов на вопрос