การจำกัด bandwidth ด้วย delay_pool ใน Squid 2.5 Stable  ตอนที่ 1


issue date 2007-09-26 18:00 by charin chookham

 

       เราใช้ squid ในการให้บริการอินเตอร์เน็ตแก่เจ้าหน้าที่ในสำนักงานมาเกือบ 7-8 ปีแล้ว ตั้งแต่สมัย RedHat 5.5 ถือว่าเสถียรดีมาก แต่ด้วยระยะหลังการใช้งานมีความหลากหลายมากขึ้น ทำให้ต้องขยายขนาดความเร็วจาก Modem = > Leaseline 64 kbps = > 128 kbps => 512 kbps(ปัจจุบัน) ก็ยังไม่พอกับการใช้อยู่ดี เลยต้องมีการจำกัดบริการบ้างไม่ว่าจะเป็นการ Block การดาวน์โหลดทั้ง File และ  Bittorrent ถึงเอาอยู่  แต่ก็ทำให้เจ้าหน้าที่เริ่มรู้และไม่พอใจ เลยต้องหาวิธีการใหม่ และเพิ่งจะมารู้ว่า Squid สามารถจัดการ Bandwidth ในตอนที่ 1 นี้เอาแบบง่าย ๆ ก่อน ผมเข้าใจว่าหลายคนเคยใช้ Squid อยู่แล้ว แค่เพียง Config เพิ่มไม่กี่บรรทัดดังนี้ก็เอาอยู่แล้ว  

      หลักการคือ เราอนุญาตให้มีการ Download ทุกอย่าง เพียงแ่ต่จะมีการจำกัด Bandwidth ในการ Download เท่านั้น  เพื่อแบ่งความเร็วไปให้คนอื่น ๆ ได้ใช้อินเตอร์เน็ตสืบค้นข้อมูลเร็วขึ้นเท่านั้น

      เดิมไฟด์ Config ของ Squid ส่วนใหญ่ก็ประมาณนี้ ซึ่งเราไม่ต้องไปแก้ไขอะไรมากดังนี้

 
############Squid.conf#################
http_port 8080

#จะ block อะไรผมก็ใส่ตรงนี้(เดิม)
acl blockfile url_regex -i ftp .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg .mpe .mpg .qt .ram .rm .iso

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl mynet src 192.168.1.0/255.255.255.0 #กลุ่ม IP LAN ภายในครับ

#http_access deny blockfile  เดิมทีผมใช้แบบนี้คือไม่ให้ Download เลย ให้แก้ไขโดยใส่ # หน้าบรรทัดนี้ไว้
http_access allow mynet
http_access deny all

#ตรงนี้เป็น Transparent ครับ
httpd_accel_host virtual httpd_accel_port 0
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

#บรรทัดที่ต้องเพิ่มใหม่
delay_pools 1
delay_class 1 1
delay_parameters 1 2500/2500  #ตรงนี้ครับที่ใช้จำกัดไม่เกิน 2.5 kbyte หากต้องการไม่เกิน 5.0 kbyte ก็เปลี่ยนเป็น 5000/5000 ไม่เกิน จะจำกัดเท่าไหร่ก็เปลี่ยนเอาเลยครับ
delay_access 1 allow blockfile
########### End ##################

 

ที่นี่ใครอยาก Download ก็เชิญได้เลยครับ แต่ได้ bandwidth ไม่เกิน 2.5 kbps เท่านั้น เห็นไหมครับว่าง่าย ๆ แค่นี้เอง แค่เพิ่ม 4 ท้ายเพิ่มเข้าไปในไฟล์ Squid.conf เดิมของท่านเท่านั้น(ผมเน้นตัวหนาเพื่อให้ท่านเห็นว่ามันสัมพันธ์กันอย่างไร)

 

 

ตัวอย่างการ Download หลัง Config และ Restart Squid (โหดไปไหมนี่ ไฟล์แค่ 16 MB ต้องดาวน์โหลดตั้ง 2-3 ชั่วโมง)

 

ความจริง deley_pool มีหลายแบบนะ คือ
     1. จำกัดการ download (แบบที่นำเสนอ)
     2. แบ่ง bandwidth ให้กับคนใช้งานภายใน network
     3. แบ่ง bandwidth ตามกลุ่มเครือข่าย (group network)
ซึ่งนำเสนอในโอกาสต่อไป