Способы ограничения скорости копирования по сети в 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_x000D_Owner : Group Policy (Machine)_x000D_ NetworkProfile : All_x000D_Precedence : 127_x000D_Template : SMB_x000D_JobObject :_x000D_ThrottleRate : 10.486 MBits/sec_x000D_

Чтобы вывести список примененных политик 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.

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

EnglishRussianUkrainian