0 Members and 1 Guest are viewing this topic.

AuthorTopic: บริหาร Bandwidht ด้วย Squid Delay pool  (Read 2716 times)

Offline aegkaluk

  • Administrator
  • Hero Member
  • *****
  • Posts: 1098
  • Total Like : 0
    • Email
« on: 04, 01, 2011, 11:29:38 »
พอดีไปเจอมาเลยเอามาฝาก อธิบายได้ละเอียดมาก   ขอบคุณที่มา http://www.susethailand.com/suseforum/index.php?topic=390.0

# Delay pool_setup additional by Sontaya (512/256 Kbps)
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
acl bcsc_local url_regex -i 192.168
acl bcsc_admin src 192.168.1.8 192.168.1.49 192.168.1.50 192.168.1.99 192.168.1.11 192.168.1.12 192.168.1.42 192.168.1.250 192.168.1.251
acl bcsc_download url_regex -i ftp .3gp .aac .ac3 .act .aif .aiff .amr .asf .au .avi .b5t .bin .bwt .cab .ccd .cdi .cue .dat .dct .div .divx .dss .exe .flac .fli .flv .gho .gsm .gz .ifo .img .iso .m4a .mp2 .mp3 .mp4 .mov .mpe .mpga .mpg .mpeg .mds .nrg .ogg .pdi .qt .ra .ram .rar .raw .rcd .rec .rm .rmvb .rmj .rpm .sea .shn .sri .swf .tar .tgz .vob .vox .vqf .wav .wmv .wma .zip .7z
acl bcsc_unlimit_bandwidth time MTWHFAS 09:00-19:00
acl bcsc_upload url_regex -i .com .avi .mpg .iso .wav .wma .dat .cda .wm .mid .midi .mp3
delay_pools 3
delay_class 1 2
delay_parameters 1 -1/-1 -1/-1
delay_access 1 allow bcsc_local
delay_access 1 allow !bcsc_unlimit_bandwidth
delay_access 1 allow bcsc_admin
delay_class 2 2
delay_parameters 2   256000/256000 256000/512000
delay_access 2 allow bcsc_download
delay_class 3 2
delay_parameters 3   20480/20480 20480/40960
delay_access 3 allow bcsc_upload
delay_access 2 deny !bcsc_unlimit_bandwidth
delay_access 2 allow bcsc_admin

# ----------------------------------------------------------------------------

อธิบาย

# กำหนด acl (Access Control List)  type แบบ url_regex
# เพื่อกำหนดการควบคุม โดยใช้การดูจาก URL
#
# acl ที่ 1 เราตั้งชื่อว่า bcsc_local ใช้สำหรับเก็บ URL ที่เราจะไม่จำกัด Bandwidth ในที่นี้คือวงแลนของเรา
#
acl bcsc_local url_regex -i 192.168

# สร้าง acl ที่ 2 ชื่อ bcsc_admin สำหรับบ้างเครื่องที่เราไม่ต้องการจำกัด Bandwidth ทุกเวลา
#
acl bcsc_admin src 192.168.1.49 192.168.1.50 192.168.1.99 192.168.1.100 192.168.1.8 192.168.1.11 192.168.1.12 192.168.1.42 192.168.1.250 192.168.1.251

# ต่อมาสร้าง acl ที่ 3 ชื่อ bcsc_download ไว้เก็บ URL ที่เราต้องการจำกัด Bandwidth
# ไม่ว่าจะเป็น ftp หรือ ไฟล์นามสกุลต่างๆ ที่เรากำหนดขึ้น (พิมพ์ให้อยู่ในบรรทัดเดียวกัน)
#
acl bcsc_download url_regex -i ftp .3gp .aac .ac3 .act .aif .aiff .amr .asf .au .avi .b5t .bin .bwt .cab .ccd .cdi .cue .dat .dct .div .divx .dss .exe .flac .fli .flv .gho .gsm .gz .ifo .img .iso .m4a .mp2 .mp3 .mp4 .mov .mpe .mpga .mpg .mpeg .mds .nrg .ogg .pdi .qt .ra .ram .rar .raw .rcd .rec .rm .rmvb .rmj .rpm .sea .shn .sri .swf .tar .tgz .vob .vox .vqf .wav .wmv .wma .zip .7z


# สร้าง acl ที่ 4 ชือ bcsc_unlimit_bandwidth  สำหรับกำหนดช่วงเวลาว่า จะทำการจำกัด Bandwidth ช่วงเวลาใดบ้าง
# กำหนดช่วงเวลาเป็น 9 โมงเช้า ถึง 1 ทุ่ม แล้วนอกนั้นจะโหลดอะไรก็เต็มที่เลย
#
acl bcsc_unlimit_bandwidth time MTWHFAS 09:00-19:00

# สร้าง acl ที่ 5ชื่อ upload เพื่อไว้เก็บ URL หรือไฟล์นามสกุลต่างๆ ที่ต้องการจำกัด Bandwidth
#
acl bcsc_upload url_regex -i .com .avi .mpg .iso .wav .wma .dat .cda .wm .mid .midi .mp3

# สร้าง delay_pool สำหรับกำหนดค่าหน่วงเวลา หรือ delay โดยเราจะกำหนดเอาไว้ 3 pool
# pool ที่ 1 สำหรับ bcsc_local,  pool ที่ 2 สำหรับ bcsc_admin, pool ที่ 3 สำหรับ bcsc_download
#
delay_pools 3

# pool ที่ 1 เรากำหนดให้ใช้ delay_class แบบที่ 2 (สังเกตุจะมีเลข -1/-1 อยู่ 2 ชุด)
# ชุดแรก หมายถึง Bandwidth รวมทั้งวงเน็ตเวิร์ค ที่เราอนุญาตให้โหลด
# ชุดสอง หมายถึง Bandwidth ของแต่ละเครื่อง ที่เราอนุญาตให้โหลด
#
delay_class 1 2

# -1/-1 หมายถึง ไม่จำกัด Bandwidth (เพราะว่า pool นี้ เรากำหนดให้ bcsc_local)
#
delay_parameters 1 -1/-1 -1/-1

# อนุญาต acl
delay_access 1 allow bcsc_local
delay_access 1 allow !bcsc_unlimit_bandwidth
delay_access 1 allow bcsc_admin



# pool ที่ 2 ก็กำหนดให้ใช้ delay_class แบบที่ 2 เช่นกัน
#
delay_class 2 2

# โดยค่าที่เรากำหนดนี้ จะคิดเป็น bytes
# ยกตัวอย่าง เลขชุดแรก 256000/ 512000
# หลังจากที่ดาวน์โหลดไปแล้ว ถ้าขนาดไฟล์ที่โหลดมีขนาดเกิน 512000 ไบท์ (หรือว่ามีขนาดมากกว่านั้น 2 ถึง 3 เท่า) ก็จะดาวน์โหลดต่อที่ 256000 ไบท์ต่อวินาที

# วิธีคิดดังนี้ (บริษัทใช้อินเตอร์เน็ต 512/256 Kbps จะแบ่งให้โหลด 256 Kbps ที่เหลืออีก 256 Kbps สำหรับเล่นเว็บ ส่งเมล์ เป็นต้น)
# เว็บสำหรับการคำนวณ http://www.t1shopper.com/tools/calculate/
# Download = 512 Kbps = 64 KB/sec วินาที (512/8)
# 1 KB = 1024 bytes
# 512 KB = ?
# การคำนวณหา bytes
# 512*1024/8 =  65536 bytes
# 65536 bytes / 1024 = 64 KB/sec

# ส่วน Bandwidth ต้องการให้ใช้ downloadแค่ 25 KB/sec ต่อเครื่อง
# 25 KB x 1024 = 256000 bytes  คือค่าที่ต้องใช้
#
delay_parameters 2 256000/256000 256000/512000

# กำหนด allow ให้ bcsc_upload ให้มีการ delay หรือจำกัด Bandwidth
#
delay_access 2 allow bcsc_download

# pool ที่ 3 ก็กำหนดให้ใช้ delay_class แบบที่ 2 เช่นกัน
# การคำนวณหา bytes
# Upload = 256 kbps
# 256*1024/8 = 32768 bytes
# 32768/1024 = 32 Kbps
# Bandwidth รวมทั้งให้อัพโหลดรวมได้เต็มที่ 256 Kbps ความเร็วสูงสุด (ทั้งวงแลน) ก็จะได้ประมาณ 32.0 KB/sec (วินาที)
# ส่วน Bandwidth แต่ละเครื่อง ให้ใช้ upload แค่ 20 KB/sec ต่อเครื่อง
# 20 KB x 1024 = 20480 bytes  คือค่าที่ต้องใช้


delay_class 3 2
delay_parameters 3 20480/20480 20480/40960
delay_access 3 allow bcsc_upload


# กำหนด deny ให้ช่วงที่ไม่ใช่ unlimit_bandwidth  มี Bandwidth เท่าไหร่ ก็อนุญาตให้ใช้เท่านั้น
#
delay_access 2 deny !unlimit_bandwidth
delay_access 2 allow bcsc_admin


อ้างถึง
Thank http://www.susethailand.com/suseforum/index.php?topic=390.0

Offline aegkaluk

  • Administrator
  • Hero Member
  • *****
  • Posts: 1098
  • Total Like : 0
    • Email
« Reply #1 on: 04, 01, 2011, 12:19:21 »
 เราใช้ 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)
ซึ่งนำเสนอในโอกาสต่อไป
 

 

ที่มา http://www.thaiopenlinux.com/articles/delay_pool.html