ในบทความนี้เราจะแสดงวิธีจำกัดอัตราการถ่ายโอนข้อมูลผ่านเครือข่าย To/From Windows Server 2016 และ Windows 10 โดยใช้ Built-in และ Third-party Tools คุณอาจรู้ว่า Windows Apps ใช้ Bandwidth ส่วนใหญ่ของ Network Interface ที่พร้อมใช้งานโดย Default อาจทำให้เกิดปัญหาบางอย่าง หาก Task (ส่วนใหญ่คือ SMB Shared Network Folders) ใช้ Bandwidth ทั้งหมดของ Network Adapter คุณสามารถจำกัดอัตราการ Copy ไฟล์สูงสุดจาก Network Shared Folder ได้ เพื่อให้ Users ของ Apps อื่นๆ ได้รับทรัพยากร Network Adapter ที่รับประกัน
ในการจัดการ Traffic Classes หรือ Priorities ใน TCP/IP Networks ใช้เทคโนโลยี QoS (Quality of Service)
การตั้งค่า QoS Group Policy บน Windows
คุณสามารถจัดการ Traffic Priority ใน Windows โดยใช้ QoS GPO Settings ในสถานการณ์นี้ ผมจะจำกัด Data Transfer Rate สำหรับ Outbound Connections ทั้งหมด (Policy จะถูกนำไปใช้แม้เมื่อ Users Copy ไฟล์จาก Server ของคุณ) โดยใช้ตัวอย่างนี้ คุณสามารถจำกัด Rate สำหรับ App, Port หรือ Host/Site ใดๆ ได้
QoS Group Policies รองรับใน:
- Windows Server 2008 หรือใหม่กว่า
- Windows Vista หรือใหม่กว่า
ก่อนอื่น ตรวจสอบ Network Adapter Settings ของคุณเพื่อให้แน่ใจว่าตัวเลือก Qos Packet Scheduler เปิดใช้งาน

- รัน Local Group Policy Editor Console (
gpedit.msc) ไปที่ Computer Configuration -> Windows Settings -> Policy-based QoS และคลิก Create New Policy;
- ระบุ Policy Name ติ๊กตัวเลือก Specify Outbound Throttle Rate และตั้งค่า Throttle Rate นี่คือ Rate ใน MBps/KBps ที่คุณต้องการจำกัด Outbound Traffic Rate ให้ Note คุณยังสามารถตั้งค่า DSCP Value ได้ DSCP (Differenciated Services Code Point) อาจใช้บน Advanced Routers อย่าง Cisco/Mikrotik ขึ้นอยู่กับ DSCP Value ของ Network Packet Routers จะตั้งค่า Priority ให้ อย่ใช้ตัวเลือกนี้หากคุณไม่แน่ใจเกี่ยวกับ DSCP QoS Settings บน Routers ของคุณ

- จากนั้นคุณอาจเลือก Process/App (Executable File .exe) หรือ IIS HTTP(S) Site ที่ Policy จะถูกนำไปใช้ ผมติ๊กตัวเลือก All Applications ไว้;

- คุณสามารถระบุ IP Interface บนคอมพิวเตอร์ของคุณที่ Policy จะถูกนำไปใช้ คุณอาจต้องการมันหากคุณมี Multiple Network Adapters หรือ IP Aliases;
- คุณยังสามารถตั้งค่า Destination IP Address เพื่อจำกัด Transfer Rate สำหรับมัน

- จากนั้นระบุ Protocol ที่ Policy จะถูกนำไปใช้ (TCP, UDP, หรือ TCP และ UDP) คุณยังสามารถเลือก Source และ Target Port ได้ หากคุณไม่แน่ใจว่า App ของคุณใช้ Protocol อะไร ให้เลือก TCP and UDP หากคุณต้องการจำกัด Access Rate ไปยัง Shared Files ใน SMB Folder ให้เลือก TCP และ Port 445

QoS Policy ใน Windows ตั้งค่าเสร็จแล้ว คุณไม่ต้อง Reboot Computer อัตราการถ่ายโอนข้อมูลในเครือข่ายจะถูก Shaped ทันทีหลังจาก Apply Changes โปรดทราบว่า Throttle Rate แสดงเป็น Kilobytes ใน Policy Editor แม้คุณจะเลือก MB เป็น Value

เนื่องจากผมเลือก All Apps และ All Ports Policy จะ Throttle Maximum Network File Transfer Rate ไปที่ 3 MB (รวมถึง File Copy โดยใช้ File Explorer — explorer.exe) ใน Screenshot ด้านล่าง คุณเห็นว่า QoS Policy ที่ตั้งค่าแล้วชะลอ Network File Transfer Rate บน Windows

นอกจากนี้ยังมี Advanced QoS Policies ที่พร้อมใช้งานเฉพาะใน Computer Configuration Group Policy Section คุณสามารถจำกัด Inbound TCP Traffic ในแท็บ Inbound TCP Traffic (แท็บ DSCP Marking Override เกี่ยวกับ DSCP Settings เราจะไม่พูดถึงที่นี่)

ตามที่คุณเห็น มี 4 ระดับของการจำกัด Traffic ตารางต่อไปนี้แสดงระดับและอัตราของพวกมัน
| Inbound TCP Throughput Level | Maximum Transfer Rate |
| 0 | 64 KB |
| 1 | 256 KB |
| 2 | 1 MB |
| 3 | 16 MB |
การจัดการ Windows Network QoS Policies ผ่าน PowerShell
คุณสามารถใช้ PowerShell เพื่อสร้างและจัดการ Network QoS Policies ตัวอย่างเช่น เพื่อสร้าง QoS Policy ที่จำกัด Bandwidth สำหรับ SMB (Shared File) Traffic ให้ใช้คำสั่งต่อไปนี้:
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 Policies ที่ Applied บน Computer ให้รันคำสั่งนี้:
Get-NetQosPolicy

เพื่อ Edit หรือ Remove QoS Policy ใช้ Cmdlets Set-NetQosPolicy และ Remove-NetQosPolicy
Remove-NetQosPolicy -Name SMBRestrictFileCopySpeed
Set-SmbBandwidthLimit: กำหนดค่า SMB Bandwidth Limit ด้วย PowerShell
Cmdlet Set-SmbBandwidthLimit อนุญาตให้จำกัด File Transfer Rate ผ่าน SMB Protocol ขั้นแรก ติดตั้ง Windows Server Component SMB Bandwidth Limit โดยใช้ PowerShell:
Add-WindowsFeature -Name FS-SMBBW
หรือคุณสามารถติดตั้งจาก Graphical Server Manager (Add Windows Feature -> SMB Bandwidth Limit) ได้
โดยปกติ Module นี้ใช้เพื่อตั้งค่า Bandwidth Limit สำหรับ Hyper-V Live Migration ตัวอย่างเช่น คำสั่งต่อไปนี้จะจำกัด Maximum VM Migration Speed ไปที่ 100 MB/s
Set-SmbBandwidthLimit -Category LiveMigration -BytesPerSecond 100MB

คุณยังสามารถใช้ Parameter -Category Default เพื่อจำกัด Common File Transfer Traffic ผ่าน SMB
Set-SmbBandwidthLimit -Category Default -BytesPerSecond 10MB
FS-SMBBW พร้อมใช้งานใน Windows Server 2012 R2 หรือใหม่กว่า
การจำกัด Bandwidth การถ่ายโอนไฟล์ใน Robocopy
เมื่อทำงานกับ Robocopy คุณยังสามารถใช้พารามิเตอร์พิเศษเพื่อจำกัดความเร็วในการ Copy/Move ไฟล์ผ่านเครือข่ายได้ คือ /ipg (Inter Packet Gap) Key ตั้งค่า Gap ระหว่าง Packages ใน Milliseconds และใช้เพื่อลด Network Load เมื่อ Copy ไฟล์ผ่าน Low-speed Channels Robocopy ส่งข้อมูลผ่านเครือข่ายใน Blocks ขนาด 64 KB ดังนั้น หากคุณรู้ Bandwidth ของ Network Link ของคุณ คุณสามารถคำนวณค่า /ipg ที่เกี่ยวข้องตามข้อกำหนด Transfer Rate ได้
หากคุณไม่ต้องการลงลึกใน Formulas คุณสามารถใช้ Robocopy IPG Calculator สำเร็จรูป: https://www.zeda.nl/index.php/en/robocopyipgcalculator-en-2

คุณยังสามารถใช้ BITS Protocol เพื่อ Copy Data ไปยัง Slow หรือ Unstable Network Links (ดูตัวอย่างในบทความเกี่ยวกับการ Copy Large Files โดยใช้ BITS และ PowerShell) BITS Protocol อนุญาตให้จัดการ Data Transfer Speed ระหว่าง Two Hosts แบบ Dynamic ขึ้นอยู่กับ Channel Load และรองรับ Download Resuming
Traffic Shaping โดยใช้ Third-Party Tools
Commercial Solution ที่นิยมมากที่สุดสำหรับจำกัด Throughput ใน Windows ขึ้นอยู่กับ Port, App หรือ Destination คือ NetLimiter Free Tool ที่นิยมมากที่สุดคือ TMeter Free
ยังมีค่าได้แก่:
- Glasswire – รวม Firewall และ Network Monitor ด้วย;
- NetBalancer – Network Monitoring และการตั้งค่า Traffic Rules;
- cFosSpeed – สามารถตั้งค่า Traffic Priorities สำหรับ Apps;
- Net Peeker – เหมือน Glasswire มี Firewall Features และอาจตั้งค่า Traffic Priorities
Windows QoS Policies สามารถจำกัด Data Transfer Rate ในเครือข่ายได้ดี ดังนั้น หากคุณต้องการทำเช่นนั้น ลอง QoS ก่อนเป็นอันดับแรก เหมือน Policy อื่นๆ คุณสามารถตั้งค่าบน Domain Level ด้วย Console gpmc.msc
Third-party Software มี Features มากกว่าและมี Graphical Interface แต่มากกว่าเป็น Commercial