Languages

User login


Squid i els delay pools




Squid disposa dels delay pool per establir límits dels amples de banda emprats.

Quan posem en marxa un proxy normalment instal·lem el Squid amb els seus paràmetres recomanats i el deixem operatiu.

A mida que va passant el temps cada cop hi ha més gent que usa el proxy i arriba un punt en que la ADSL no dona més ample de banda i l'accés a Internet cau deixant de ser operatiu pels usuaris.

En aquest moment hem de fer una anàlisis del tràfic que està suportant, quines son les Webs amb descarregues més pesades i quins usuaris estan fent un us més intensiu.

A partir d'aquest anàlisis podem mirar d'ajustar millor el funcionament del proxy mitjançant la posta en marxa del delay pools del Squid.

arxiu configuracio a Fedora 12  de  GUINUX  etc/squid/squid.conf

Que son? 

Els delay pools son dipòsits d'ample de banda amb un regulador de cabal a l'entrada dels mateixos.

A cada tipus de tràfic que hem determinat de anàlisis previ, podem assignar-li un delay pool i d'aquesta manera podem repartir l'ample de banda per millorar el funcionament del proxy.

Quins paràmetres te?

En primer lloc hem de dir al Squid quants delay pool usarem. En l'exemple, en definim 5.

delay_pools 5

A continuació hem de definir quines classes de delay pool seran. Hi han 3 classes diferents:

  • Classe 1: tot el tràfic es regula per un únic diposit.

  • Classe 2: disposa d'un diposit principal del que pengen 256 dipòsits individuals. La selecció del diposit individual es realitza mitjançant els bits del 25 al 32 de la adreça IP client.

  • Classe 3: disposa de 3 nivells de diposit. Un principal, 256 pel segon nivell o de xarxa i 256 individuals per cada diposit de xarxa, es dir 65536 diposit individuals. La selecció del diposit de nivell de xarxa es fa amb els bits del 17 al 24 de la adreça IP client i pels individuals del 17 al 32

Per exemple:

delay_class 1 1

delay_class 2 1

delay_class 3 2

delay_class 4 2

delay_class 5 2

 

Un cop definides les classes de delays pools que emprarem, hem de definir quins amples de banda assignarem a cadascun.

Per cada diposit definirem quin ample de banda assignem per omplir cada diposit i la capacitat del mateix, es a dir, tot el volum de dades que es serviran al client sense ajustar el cabal. Els paràmetres son bytes per segon i bytes respectivament.

Per exemple:

delay_parameters 1 -1/-1 # -1 indica que no hi han limits

delay_parameters 2 400000/50000000 # reservem 3,2Mbps i 50MB de descarrega directa

# Els 3 següents, al ser de classe 2 cal definir dues parelles de valors.

delay_parameters 3 800000/100000000 400000/50000000

delay_parameters 4 200000/10000000 50000/5000000

delay_parameters 5 100000/5000000 30000/2500000

 

En l'últim pas haurem d'assignar cada delay als tipus de tràfic que hem determinat. Els tipus de tràfic els definirem mitjançant ACL del Squid i podrem assignar-ho Per fer-ho usem la crida delay_access amb l'opció allow o deny.

A qui us adjunto un diagrama per si us serveix per fer-vos una imatge més visual o liar-vos encara més.




En aquest exemple el primer filtre que es passa és el d'usuaris controlats que tenen assignat un ample de banda de 100Kbps i una descarrega directa de 50MB.

El segon filtre que s'aplica es per web limitades que s'està deixant 1Mbps d'ample de banda i 20 MB de descarrega abans de filtrar.

El tercer es per fitxer pesats deixant 200Kbps i 50 MB.

El quart es un exemple d'un delay pool de classe 2 pels usuaris externs. L'agregat te 1 Mbps i 100 MB repartint-se en funció de l'adreça IP en 256 pools addicional que hem configurat 20 Kbps i 5MB.

L'últim pool es per usuaris locals i no tenen cap filtre.

Els valors escollits simplement son d'exemple. Segurament no es la distribució més adient.

Us hi afegeixo un exemple de com el tinc funcionant:

# Definim primer les ACL que emprearem
acl FitxersLimitatsVelocitat url_regex ftp .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg .mpe .mpg .qt
acl websLimitadesVelocitat dstdomain "/etc/squid/websLimitadesVelocitat.acl"
acl usuarisControlats src "/etc/squid/usuarisControlats.acl"
acl usuarisOlost src 10.138.120.66-10.138.120.160 10.138.121.97-10.138.121.120
# tambe uso la ACL localnet que ja estava definida en el squid

# els fitxers indicats es posa la llista que es vol filtrar.
# per exemple en el de webs limitades tinc rapidshare.com
# en la usuaris controlats la llista d'ips des d'on s'ha desfassat mes fent descarregues.

#Definim 5 delays pool
delay_pools 5

#Definim els tipus
#probablement els de clase 2 haurien de ser de clase 3 més endevant ja ho miraré
delay_class 1 2
delay_class 2 2
delay_class 3 2
delay_class 4 1
delay_class 5 1

# delay per usuaris que abusen de les descaregues a definir en fitxer usuarisControlats
delay_parameters 1 300000/5000000 15000/2500000

# delay per webs tipus rapidshare a definir en fitxer websLimitadesVelocitat
delay_parameters 2 100000/10000000 30000/5000000

# delay pels tipus de fitxers pessats
delay_parameters 3 300000/100000000 100000/50000000

# delay per usuaris de fora d'olost
delay_parameters 4 400000/50000000

# delay per usuaris d'olost no hi ha cap limitació
delay_parameters 5 -1/-1

# jmr 15/12/09 limitacio de usuaris
delay_access 1 allow usuarisControlats

# jmr 15/12/09 limitacio de rapidshare i d'altres
delay_access 2 allow websLimitadesVelocitat

# jmr 11/10/09 limitacio per tipus de fitxer
delay_access 3 allow FitxersLimitatsVelocitat

# acces per usuaris externs
delay_access 4 deny usuarisOlost   # per que no apliqui el filtre pels usuaris d'olost
delay_access 4 allow localnet
delay_access 5 allow usuarisOlost

Espero que us serveixi.

 

Josep

 

Comentaris

Opcions de visualització de comentaris

Selecciona la vostra manera preferida de visualitzar els comentaris i feu clic en "Desa la configuració" per activar els canvis.

gracies

Molt bone aportació.

podries posar tambe un exemple del squid.conf ja seria la pera xD

tambe crec que es tindria de posar en apartat de documentació

Moltes Gracies per la teva feina Josep!

 

 

Exemple

Ja l'hi he afegit

El que no se es com posar-ho a l'apartat de documentació. Per aixó el vaig possar al blog i el vaig encetar.

Josep

imatge de SGElectronics.cat

un 10!!! collonut...

deseguida que  pogui ho provo... GRACIES.

imatge de ougu

artículo en castellano

¡Hola!

¿habría alguna posibilidad de tener este artículo en castellano?

 

gracias

imatge de SGElectronics.cat

Temps acció de delaypools (en test)

El temps de ACL li permet controlar l'accés basat en l'hora del dia i el dia de la setmana. La sintaxi és:
acl [dia] nom [h1: m1-h2: m2]
Podeu especificar els dies de la setmana, l'inici i el temps d'aturada, o ambdós. Els dies són especificats per
codis que es mostren a la Taula. Els temps estan especificats en el format de 24 hores. L'hora d'inici ha de ser menor a l'hora de finalització, el que fa difícil d'escriure ACL de temps que inclouen  "mitjanits".

Codi del Dia

  • S diumenge
  • M dilluns
  • T dimarts
  • W dimecres
  • H dijous
  • F divendres
  • Un dissabte
  • D Tots els dies de la setmana (M-F)

Dies i horaris són interpretats amb la funció localtime (), que té en
el compte de la seva zona horària local i l'horari d'estiu ajustaments de temps. Assegureu-vos que
l'equip sap el que la zona horària té!
Per especificar una ACL temps que coincideixi amb el seu dia de la setmana les hores de treball, es pot escriure:
acl Working_hours MTWHF 8:00-17:00
o:
acl Working_hours D 8:00-17:00

Vegem un exemple més complicat. Potser vostè és un ISP que es relaxa l'accés durant les hores punta, per exemple 8 p.M. 04 PM Des d'aquesta mitjanit s'estén, no es pot escriure "20:00-04:00". En el seu lloc hauràs de sigui per dividir en dues ACL o definir les hora punta d'ús i la negació. Per exemple:


acl Offpeak1 20:00-23:59
acl Offpeak2 00:00-04:00
http_access allow Offpeak1 ...
http_access allow Offpeak2 ...


Alternativament, vostè pot fer-ho d'aquesta manera:

acl pic 4:00-20:00
http_access allow! pic ...

Encara que Squid permet, probablement no hauria de posar més d'una llista dia i rang de temps en una sola
línia de temps de ACL. El programa d'anàlisi no sempre és prou intel ligent com per saber el que vols. Per exemple, si escriuel següent:


acl temps Bla M 8:00-10:00 9:00-11:00 W


el que realment és acabar amb això:


acl temps Bla MW 9:00-11:00


Els dies de setmana analitzador RUP junts i només utilitza l'interval de temps passat. No funciona, però, si vostè escriuque d'aquesta manera, en dues línies diferents:


acl temps Bla M 8:00-10:00
acl temps Bla W 9:00-11:00

ISBN: 0-596-00162-2

 

imatge de Blackhold

contingut fitxers

 Hola,
podries mostrar un exemple del contingut dels fitxers:

/etc/squid/websLimitadesVelocitat.acl

/etc/squid/usuarisControlats.acl

o quin format han de tenir?

nota: estic documentant la configuració d'un servidor proxy i el tema de les acl vull que hi vagin incloses, si aquest article no està traduït no tinc problema en fer-ho.