В этой статье мы рассмотрим способы ограничения скорости передачи данных по сети с/на Windows Server 2016 и Windows 10 с помощью встроенных и сторонних средств. Как известно, что по умолчанию, приложения Windows используют сетевой интерфейс по максимуму. Это может вызвать проблемы, когда определенная задача (чаще всего это общие сетевые папки ) используют всю доступную пропускную способность сетевой карты. В это случае вы можете ограничить максимальную скорость копирования файлов из сетевой папки, и предоставить пользователям других приложения гарантированные ресурсы сетевой карты.
- Настройка групповой политики QoS в Windows
- Управление политиками QoS Windows средствами PowerShell
- Set-SmbBandwidthLimit: управление пропускной способностью для SMB трафика из PowerShell
- Ограничение скорости передачи файлов в Robocopy – ключ /IPG
- Управление шейпингом трафика с помощью сторонних утилит
Настройка групповой политики QoS в Windows
Вы можете управлять приоритетами трафика в Windows с помощью настроек групповой политики QoS. В этом сценарии я ограничу скорость передачи данных для всех исходящих соединений (политика будет применяться, в том числе, когда пользователи копируют файлы с вашего сервера). На основе данного примера вы сможете ограничить скорость для любого приложения, порта или сайта.
Групповые политики QoS поддерживается в:
- Windows Server 2008 и выше
- Windows Vista и выше
В первую очередь настройки параметры сетевой карты и убедитесь, что у вас включена опция Qos Packet Scheduler.
- Запустите оснастку локального редактора GPO (gpedit.msc) и перейдите в раздел Computer Configuration -> Windows Settings -> Policy-based QoS и нажмите Create new policy ;
- Укажите имя политики, включите опцию Specify Outbound Throttle Rate и задайте ограничение скорости Throttle Rate . Это скорость в MBps/KBps (мегабайтах/килобайтах) до которой вы хотите ограничить исходящий трафик.Заметка . Также есть возможность выставить DSCP значение. DSCP (Differenciated Services Code Point) может использоваться на продвинутых маршрутизаторах типа Cisco/Mikrotik. В зависимости от значения DSCP у пакета, маршрутизаторы будут выставлять этому пакету приоритет. Не используйте этот параметр, если вы не уверены в настройках QoS DSCP на ваших маршрутизаторах.
- Далее можете выбрать конкретный процесс/приложение (исполняемый .ехе файл) или определенный http(s) сайт IIS , к которому будет применяться политика. В моём случае я оставлю опцию All application ;
- Вы можете указать к какому IP на вашем компьютере будет применяться политика. Это может понадобиться, если у вас есть несколько сетевых карт или IP алиасов ;
- Также вы можете указать целевой IP, с которым вы хотите ограничить скорость передачи;
- Далее указывается протокол, к которому будет применяется политика (TCP, UDP или TCP and UDP). А также можете выбрать исходящий и целевой порт. Если вы не уверены по какому протоколу работает ваше приложение, которое вы хотите ограничить, выбирайте TCP and UDP. Если вы хотите ограничить скорость доступа к общим файлам в сетевой папке, укажите протокол TCP и 445 порт;
Настройка QoS политики в Windows завершена. Перезагружаться не надо, сразу после применения изменений скорость передачи по сети начнёт шейпиться. Обратите внимание, что Throttle Rate отображается редакторе политик в КилоБайтах, даже если вы выбрали значение 3 МБ.
Так как я выбрал все приложения и все порты, данная политика будет ограничивать максимальную скорость передачи файлов по сети до 3 Мб (в том числе при копировании файлов через File Explorer — explorer.exe).
Еще существуют Advanced QoS политики , которые доступны только в разделе конфигурации политик компьютера. Вы можете ограничить входящий TCP трафик на вкладке Inbound TCP Traffic . (Вкладка DSCP Marking Override относится к настройкам DSCP, её рассматривать мы не будем)
Как вы видите, имеются 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
Чтобы изменить, или удалить политику 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
Вы также можете указать -Category Default для ограничения обычного трафика для передачи файлов по протоколу SMB.
Set-SmbBandwidthLimit -Category Default -BytesPerSecond 10MB
Ограничение скорости передачи файлов в Robocopy – ключ /IPG
При использовании robocopy вы также можете использовать специальный ключ, позволяющий ограничения скорости копирования/перемещения файлов по сети. Для этого используется ключ /ipg (Inter packet Gap). Этот ключ выставляет интервал между пакетами в миллисекундах и используется для снижения нагрузки на сеть при копировании по низкоскоростным каналам. Robocopy передает данные по сети блоками по 64 КБ, и таким образом, зная пропускную способность вашего канала, можно рассчитать нужное значение для /ipg
, исходя из требований к ограничению скорости передачи.
Если вы не хотите углубляться в формулы, то можете использовать уже готовый калькулятор Robocopy IPG Calclator: http://www.zeda.nl/index.php/en/robocopyipgcalculator-en-2
Управление шейпингом трафика с помощью сторонних утилит
Из платных вариантов самым популярным решением для ограничения пропускной способности в Windows в зависимости от порта, приложения, назначения является программы NetLimiter , а из бесплатных TMeter Free.
Также можно отменить:
- Glasswire – также включается в себя файервол и сетевой мониторинг;
- NetBalancer – сетевой мониторинг и возможность настраивать правила для трафика;
- cFosSpeed – может задать приоритет трафика для определенных приложений;
- Net Peeker – как и Glasswire имеет функцию файервола и возможность задавать приоритеты для трафика.
С задачей ограничения скорости передачи данных по сети отлично справляются QoS политики Windows, поэтому если перед вами стоит такая задача, то политики QoS должны быть рассмотрены в первую очередь. К тому же как и любые политики, они могут быть настроены на уровне всего домена через консоль gpmc.msc.
Стороннее ПО более функционально и имеет графический интерфейс, но в большинстве случаев это платные программы.