สำนักวิทยบริการและเทคโนโลยีสารสนเทศ (สวส.)

Office of Academic Resources and Information Technology

วิธีการ limit bandwidth ใน Linux

หากเรามีการใช้งานหรือให้บริการ service จำนวนมาก เราจะจัดการเรื่องการใช้งาน Bandwidth ใน Linux ยังไงดี เช่น เราอยากจะโหลด Bittorrent แต่ก็ไม่อยากให้ดู Youtube อืด เป็นต้น สิ่งเหล่านั้นคือการกำหนด Limit bandwidth ในแต่ละ process นั่นเอง โดยสามารถทำได้ดังนี้

1. ใช้โปรแกรม Trickle

Trickle สามารถที่จะ limit bandwidth ของ Application แต่ละตัวได้

– ติดตั้ง Trickle ใน Ubuntuโดยใช้คำสั่ง

# apt-get install trickle

– หากเป็น CentOS ให้ใช้คำสั่งเป็น

# yum install trickle

– จากนั้นเราสามารถใช้ trickle ในการจัดการ bandwidth แต่ละ application ได้โดยใช้คำสั่งเป็น

# trickle -d <download-rate> -u <upload-rate> <command>

-d เป็นส่วนกำหนดความเร็วสูงสุดที่สามารถ download ได้

-u เป็นส่วนกำหนดความเร็วสูงสุดที่สามารถ upload ได้

เช่น หากต้องการ limit ความเร็วในการ upload file test.deb ไปยังเครื่อง destination ผ่าน scp protocol โดยปกติจะใช้คำสั่งเป็น

# scp test.deb user@destination:

เราจะ limit upload ได้ไม่เกิน 100KB/s ได้โดยใช้ trickle ออกมาเป็น

# trickle -u 100 scp test.deb user@destination:

ทีนี้หากเราต้องการ limit download bandwidth ไม่เกิน 300KB/s ของ Firefox เราจะใช้คำสั่งเป็น

# trickle -d 300 firefox

ทั้งนี้เราสามารถกำหนดให้ application ทั้งหมด  download รวมได้ไม่เกินที่กำหนดก็ทำได้เช่นกัน แต่ต้องใช้แบบ daemon process แทน โดยในที่นี้จะกำหนด bandwidth ทั้งหมดที่ร่วมกัน download ได้ไม่เกิน 1000 KB/s ก็จะได้ออกมาเป็น

# trickled -d 1000

2. ใช้ Application ที่ชื่อว่า Wondershaper

Wondershaper สามารถกำหนด shape bandwidth แบบระบุ Interface ได้

– ติดตั้ง Wondershaper ใน Ubuntuโดยใช้คำสั่ง

# apt-get install wondershaper

หากเป็น CentOS ให้ใช้คำสั่งเป็น

# yum install wondershaper

– โดย Wondershaper จะใช้คำสั่งเป็น

$ sudo wondershaper <interface> <download-rate> <upload-rate>

ทีนี้หากเราต้องการ limit bandwidth ของ interface eth0 ว่า download ได้ไม่เกิน 1024 Kbit/s และ upload ได้ไม่เกิน 512Kbit/s จะใช้คำสั่งเป็น

# sudo wondershaper eth0 1024 512

และหากเราต้องการยกเลิกการ shape bandwidth ให้เราใช้คำสั่งเป็น

#  sudo wondershaper clear eth0

ก็จะกลายเป็นปลดการ shape bandwidth ใน eth0 ได้ครับ

Reference:: Xmodulo.com , techsuii.com