Способы ограничения скорости копирования по сети в Windows

Способы ограничения скорости копирования по сети в Windows

В этой статье мы рассмотрим способы ограничения скорости передачи данных по сети с/на Windows Server 2016 и Windows 10 с помощью встроенных и сторонних средств. Как известно, что по умолчанию, приложения Windows используют сетевой интерфейс по максимуму. Это может вызвать проблемы, когда определенная задача (чаще всего это общие сетевые папки) используют всю доступную пропускную способность сетевой карты. В это случае вы можете ограничить максимальную скорость копирования файлов из сетевой папки, и предоставить пользователям других приложения гарантированные ресурсы сетевой карты.

Для управления классами и приоритетами трафика в сетях TCP/IP используется технология QoS (quality of service).

Настройка групповой политики QoS в Windows

Вы можете управлять приоритетами трафика в Windows с помощью настроек групповой политики QoS. В этом сценарии я ограничу скорость передачи данных для всех исходящих соединений (политика будет применяться, в том числе, когда пользователи копируют файлы с вашего сервера). На основе данного примера вы сможете ограничить скорость для любого приложения, порта или сайта.

Групповые политики QoS поддерживается в:

  • Windows Server 2008 и выше
  • Windows Vista и выше

В первую очередь настройки параметры сетевой карты и убедитесь, что у вас включена опция Qos Packet Scheduler.

включить Qos Packet Scheduler для сетевой карты windows

  1. Запустите оснастку локального редактора GPO (gpedit.msc) и перейдите в раздел Computer Configuration -> Windows Settings -> Policy-based QoS и нажмите Create new policy; создать политику qos
  2. Укажите имя политики, включите опцию Specify Outbound Throttle Rate и задайте ограничение скорости Throttle Rate. Это скорость в MBps/KBps (мегабайтах/килобайтах) до которой вы хотите ограничить исходящий трафик.

    Заметка. Также есть возможность выставить DSCP значение. DSCP (Differenciated Services Code Point) может использоваться на продвинутых маршрутизаторах типа Cisco/Mikrotik. В зависимости от значения DSCP у пакета, маршрутизаторы будут выставлять этому пакету приоритет. Не используйте этот параметр, если вы не уверены в настройках QoS DSCP на ваших маршрутизаторах.

    имя политики qos и ограничение максимальной скорости передачи

  3. Далее можете выбрать конкретный процесс/приложение (исполняемый .ехе файл) или определенный http(s) сайт IIS, к которому будет применяться политика. В моём случае я оставлю опцию All application; выбрать приложения, для которых нужно ограничивать максимальный трафик
  4. Вы можете указать к какому IP на вашем компьютере будет применяться политика. Это может понадобиться, если у вас есть несколько сетевых карт или IP алиасов;
  5. Также вы можете указать целевой IP, с которым вы хотите ограничить скорость передачи; qos выбрать ip адреса получателя и источника
  6. Далее указывается протокол, к которому будет применяется политика (TCP, UDP или TCP and UDP). А также можете выбрать исходящий и целевой порт. Если вы не уверены по какому протоколу работает ваше приложение, которое вы хотите ограничить, выбирайте TCP and UDP. Если вы хотите ограничить скорость доступа к общим файлам в сетевой папке, укажите протокол TCP и 445 порт; порты и протоколы, для которых нужно включить qos

Настройка QoS политики в Windows завершена. Перезагружаться не надо, сразу после применения изменений скорость передачи по сети начнёт шейпиться. Обратите внимание, что Throttle Rate отображается редакторе политик в КилоБайтах, даже если вы выбрали значение 3 МБ.

список примененных групповых политик QoS в Windows

Так как я выбрал все приложения и все порты, данная политика будет ограничивать максимальную скорость передачи файлов по сети до 3 Мб (в том числе при копировании файлов через File Explorer — explorer.exe).

ограничение максимальной скопрости передачи в Windows через политики QoS

Еще существуют Advanced QoS политики, которые доступны только в разделе конфигурации политик компьютера. Вы можете ограничить входящий TCP трафик на вкладке Inbound TCP Traffic. (Вкладка DSCP Marking Override относится к настройкам DSCP, её рассматривать мы не будем)

Advanced QoS политики

Как вы видите, имеются 4 уровня ограничения трафика. В следующей таблице указаны уровни и их скорости.

Inbound TCP throughput level Максимальная скорость передачи
0 64 Кб
1 256 Кб
2 1 Мб
3 16 Мб

Управление политиками QoS Windows средствами PowerShell

Для создания и управления политиками QoS можно использовать PowerShell. Например, чтобы создать политику QoS, ограничивающую пропускную способность для SMB (файлового) трафика, используйте команду:

New-NetQosPolicy -Name "SMBRestrictFileCopySpeed" -SMB -ThrottleRateActionBitsPerSecond 10MB

Name : SMBRestrictFileCopySpeed
Owner : Group Policy (Machine)
 NetworkProfile : All
Precedence : 127
Template : SMB
JobObject :
ThrottleRate : 10.486 MBits/sec

Чтобы вывести список примененных политик QoS на компьютере, выполните команду:
Get-NetQosPolicy


New-NetQosPolicy управление QoS политиками из PowerShell

Чтобы изменить, или удалить политику QoS, используются соответственно командлеты
Set-NetQosPolicy
и
Remove-NetQosPolicy
.

Remove-NetQosPolicy -Name SMBRestrictFileCopySpeed

Set-SmbBandwidthLimit: управление пропускной способностью для SMB трафика из PowerShell

Командлет Set-SmbBandwidthLimit позволяет ограничить скорость передачи данных по SMB протоколу. Сначала нужно установить компонент Windows Server SMB Bandwidth Limit с помощью PowerShell:

Add-WindowsFeature -Name FS-SMBBW

Или можно установить его из графического Server Manager (Add Windows Feature -> SMB Bandwidth Limit).

Обычно данный модуль применяется для ограничения скорости для Hyper-V Live Migration. Например, следующая команда ограничить скорость миграции виртуальных машин до 100 Мбайт/сек.

Set-SmbBandwidthLimit -Category LiveMigration -BytesPerSecond 100MB

Set-SmbBandwidthLimit ограничение скорости для файлового трафика

Вы также можете указать -Category Default для ограничения обычного трафика для передачи файлов по протоколу SMB.

Set-SmbBandwidthLimit -Category Default -BytesPerSecond 10MB

Компонент FS-SMBBW доступен начиная с Windows Server 2012 R2.

Ограничение скорости передачи файлов в Robocopy – ключ /IPG

При использовании robocopy вы также можете использовать специальный ключ, позволяющий ограничения скорости копирования/перемещения файлов по сети. Для этого используется ключ /ipg (Inter packet Gap). Этот ключ выставляет интервал между пакетами в миллисекундах и используется для снижения нагрузки на сеть при копировании по низкоскоростным каналам. Robocopy передает данные по сети блоками по 64 КБ, и таким образом, зная пропускную способность вашего канала, можно рассчитать нужное значение для
/ipg
, исходя из требований к ограничению скорости передачи.

Если вы не хотите углубляться в формулы, то можете использовать уже готовый калькулятор Robocopy IPG Calclator: http://www.zeda.nl/index.php/en/robocopyipgcalculator-en-2

Robocopy IPG Calclator

Для копирования данных по медленным и нестабильным каналам также можно использовать протокол BITS (см. пример в статье Копирование больших файлов с помощью BITS и PowerShell). Этот протокол позволят динамически управлять скоростью передачи данных между двумя узлами в зависимости от занятости канала и поддерживает докачку.

Управление шейпингом трафика с помощью сторонних утилит

Из платных вариантов самым популярным решением для ограничения пропускной способности в Windows в зависимости от порта, приложения, назначения является программы NetLimiter, а из бесплатных TMeter Free.

Также можно отменить:

  • Glasswire – также включается в себя файервол и сетевой мониторинг;
  • NetBalancer – сетевой мониторинг и возможность настраивать правила для трафика;
  • cFosSpeed – может задать приоритет трафика для определенных приложений;
  • Net Peeker – как и Glasswire имеет функцию файервола и возможность задавать приоритеты для трафика.

С задачей ограничения скорости передачи данных по сети отлично справляются QoS политики Windows, поэтому если перед вами стоит такая задача, то политики QoS должны быть рассмотрены в первую очередь. К тому же как и любые политики, они могут быть настроены на уровне всего домена через консоль gpmc.msc.

Стороннее ПО более функционально и имеет графический интерфейс, но в большинстве случаев это платные программы.

Windows 10
Способы ограничения скорости копирования по сети в Windows