Limitare la banda in download con squid: Difference between revisions
mNo edit summary |
|||
| (4 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
=Introduzione= | |||
*E' possibile limitare la velocità di download attraverso il proxy, tramite l'utilizzo dei ''Delay Pools'' | |||
*Si vogliono ottenere i seguenti risultati: | |||
:* Non limitare la velocità di download per eventuali connessioni a risorse in LAN (subnet 192.168.0.0/16) | |||
:* Non limitare la velocità di scaricamento per files di dimensione inferiore ai 512KByte | |||
:* Limitare la velocità di download GLOBALE a 4Mbit/s per files scaricati superiori a 512KByte | |||
:* Limitare la velocità do download per singolo client a 4Mbit/s per files scaricati superiori a 512KByte | |||
=Calcolo dei valori= | |||
* I valori da inserire sono espressi in Byte, cioè 8 bit | |||
== Valore Banda== | |||
* Calcolo banda da valore in Mb/s: | |||
valore da inserire = banda_in_megabit / 8 * 1024 * 1000 | |||
* Ad esempio se vogliamo convertire 4Mb/s: | |||
4 / 8 * 1024 * 1000 = 512000 | |||
* Calcolo banda da valore in Kb/s | |||
valore da inserire = banda_in_kilobit / 8 * 1000 | |||
* Ad esempio se vogliamo convertire 4096 Kb/s: | |||
4096 / 8 * 1000 = 512000 | |||
== Valore Dimensione== | |||
* Calcolo dimensione file da valore in Kilobyte: | |||
valore_da_inserire = dimensione_in_kilobyte * 1000 | |||
* Ad esempio se vogliamo convertire 512 KB: | |||
512 * 1000 = 512000 | |||
* Calcolo dimensione file da valore in Megabyte: | |||
valore_da_inserire = dimensione_in_megabyte * 1024 *1000 | |||
* Ad esempio se vogliamo convertire 4MB: | |||
4 * 1024 * 1000 = 4096000 | |||
= Configurazione = | |||
Inserire in squid.conf le seguenti direttive: | Inserire in squid.conf le seguenti direttive: | ||
| Line 21: | Line 64: | ||
* Il primo è il limite aggregato di velocità. Questo limite viene specificato nella forma '''a/b''' | * Il primo è il limite aggregato di velocità. Questo limite viene specificato nella forma '''a/b''' | ||
** a: dimensione in byte oltre il quale scatta la limitazione (files di dimensioni inferiori a questa vengono scaricatia a piena veloità, generando traffico burts) | ** a: dimensione in byte oltre il quale scatta la limitazione (files di dimensioni inferiori a questa vengono scaricatia a piena veloità, generando traffico burts) | ||
**b: limite di velocità in bit/sec | '''verificare''' ''**b: limite di velocità in bit/sec'' | ||
* Il secondo è il limite specifico per ogni singolo ip connesso. Anch'esso è espresso nella stessa forma precedente. | * Il secondo è il limite specifico per ogni singolo ip connesso. Anch'esso è espresso nella stessa forma precedente. | ||
| Line 37: | Line 80: | ||
Definiamo i limiti di questo pool numero 2: | Definiamo i limiti di questo pool numero 2: | ||
delay_parameters 2 | delay_parameters 2 64000/100000 60000/100000 | ||
Quindi: | Quindi: | ||
* 2 = numero pool | * 2 = numero pool | ||
* | '''verificare''' * 64000 = lo scaricamento è limitato a 64kByte/sec (512kBit/sec) globalmente | ||
* | * 100000 = oltre i 100 kBytes di dimensione, scatta la limitazione per il limite globale | ||
* | '''verificare''' * 60000 = lo scaricamento è limitato a 60kByte/sec (480kBit/sec) per singola connessione | ||
* 100000 = oltre i 100 kBytes di dimensione, scatta la limitazione per il limite singolo | |||
<pre> | |||
delay_parameters 2 512000/1000000 256000/1000000 | |||
# 4Mbit/s /8 =512kB/s start at 1000KB=1MB GLOBAL | |||
# 2Mbit/s /8 =256kB/s start at 1000KB=1MB Individual | |||
delay_access 2 allow files_limitati | |||
</pre> | |||
Definiamo quindi quale traffico entra in questo pool, che sarà quello degli url contenenti le estensioni precedentemente definite: | Definiamo quindi quale traffico entra in questo pool, che sarà quello degli url contenenti le estensioni precedentemente definite: | ||
| Line 62: | Line 113: | ||
delay_class 2 2 | delay_class 2 2 | ||
delay_parameters 2 | delay_parameters 2 100000/64000 100000/60000 | ||
delay_access 2 allow files_limitati | delay_access 2 allow files_limitati | ||
</pre> | </pre> | ||
| Line 68: | Line 119: | ||
==Riferimenti== | ==Riferimenti== | ||
*[http://www.howtoforge.com/squid-delay-pools-bandwidth-management Squid - Delay Pools Bandwidth Management | HowtoForge - Linux Howtos and Tutorials] | |||
*[http://tldp.org/HOWTO/Bandwidth-Limiting-HOWTO/index.html Bandwidth Limiting HOWTO] | *[http://tldp.org/HOWTO/Bandwidth-Limiting-HOWTO/index.html Bandwidth Limiting HOWTO] | ||
*[http://www.deckle.co.za/squid-users-guide/Access_Control_and_Access_Control_Operators#Delay_Classes Spiegazione dei tipi di classe] | *[http://www.deckle.co.za/squid-users-guide/Access_Control_and_Access_Control_Operators#Delay_Classes Spiegazione dei tipi di classe] | ||
*[http://groups.google.com/group/mailing.unix.squid-users/browse_thread/thread/b3ad4f9783d8e4a/d2b13e1d806bca42 Delay pools - mailing.unix.squid-users | Google Groups:] | |||
Latest revision as of 11:29, 4 March 2016
Introduzione
- E' possibile limitare la velocità di download attraverso il proxy, tramite l'utilizzo dei Delay Pools
- Si vogliono ottenere i seguenti risultati:
- Non limitare la velocità di download per eventuali connessioni a risorse in LAN (subnet 192.168.0.0/16)
- Non limitare la velocità di scaricamento per files di dimensione inferiore ai 512KByte
- Limitare la velocità di download GLOBALE a 4Mbit/s per files scaricati superiori a 512KByte
- Limitare la velocità do download per singolo client a 4Mbit/s per files scaricati superiori a 512KByte
Calcolo dei valori
- I valori da inserire sono espressi in Byte, cioè 8 bit
Valore Banda
- Calcolo banda da valore in Mb/s:
valore da inserire = banda_in_megabit / 8 * 1024 * 1000
- Ad esempio se vogliamo convertire 4Mb/s:
4 / 8 * 1024 * 1000 = 512000
- Calcolo banda da valore in Kb/s
valore da inserire = banda_in_kilobit / 8 * 1000
- Ad esempio se vogliamo convertire 4096 Kb/s:
4096 / 8 * 1000 = 512000
Valore Dimensione
- Calcolo dimensione file da valore in Kilobyte:
valore_da_inserire = dimensione_in_kilobyte * 1000
- Ad esempio se vogliamo convertire 512 KB:
512 * 1000 = 512000
- Calcolo dimensione file da valore in Megabyte:
valore_da_inserire = dimensione_in_megabyte * 1024 *1000
- Ad esempio se vogliamo convertire 4MB:
4 * 1024 * 1000 = 4096000
Configurazione
Inserire in squid.conf le seguenti direttive:
Per evitare di limitare dei download da siti intranet, definire l'acl:
acl traffico_intranet url_regex -i 192.168
Scegliamo di limitare il download solo di determinati tipi di files, definendo l'acl:
acl files_limitati url_regex -i ftp .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg .mpe .mpg .qt .ram .rm .iso .raw .wav .mov
Creiamo due delay pools:
delay_pools 2
Definiamo ora i parametri per il primo pool, definendolo di classe 2 (vedi di seguito)
delay_class 1 2 #First delay class (1) of second type (2).
Il tipo di classe di delay 2 permette di definire due tipi di limiti:
- Il primo è il limite aggregato di velocità. Questo limite viene specificato nella forma a/b
- a: dimensione in byte oltre il quale scatta la limitazione (files di dimensioni inferiori a questa vengono scaricatia a piena veloità, generando traffico burts)
verificare **b: limite di velocità in bit/sec
- Il secondo è il limite specifico per ogni singolo ip connesso. Anch'esso è espresso nella stessa forma precedente.
Definiamo ora i limiti da imporre al pool 1, che vogliamo sia il pool senza limiti:
delay_parameters 1 -1/-1 -1/-1 #-1/-1 mean that there are no limits.
Ora definiamo quali connessioni ammettere in questo pool, che saranno quelle destinate agli indirizzi intranet:
delay_access 1 allow traffico_intranet
Definiamo ora il secondo pool anche questo di classe 2:
delay_class 2 2
Definiamo i limiti di questo pool numero 2:
delay_parameters 2 64000/100000 60000/100000
Quindi:
- 2 = numero pool
verificare * 64000 = lo scaricamento è limitato a 64kByte/sec (512kBit/sec) globalmente
- 100000 = oltre i 100 kBytes di dimensione, scatta la limitazione per il limite globale
verificare * 60000 = lo scaricamento è limitato a 60kByte/sec (480kBit/sec) per singola connessione
- 100000 = oltre i 100 kBytes di dimensione, scatta la limitazione per il limite singolo
delay_parameters 2 512000/1000000 256000/1000000 # 4Mbit/s /8 =512kB/s start at 1000KB=1MB GLOBAL # 2Mbit/s /8 =256kB/s start at 1000KB=1MB Individual delay_access 2 allow files_limitati
Definiamo quindi quale traffico entra in questo pool, che sarà quello degli url contenenti le estensioni precedentemente definite:
delay_access 1 allow files_limitati
Riassumendo:
acl traffico_intarnet url_regex -i 192.168 acl files_limitati url_regex -i ftp .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg .mpe .mpg .qt .ram .rm .iso .raw .wav .mov delay_pools 2 delay_class 1 2 delay_parameters 1 -1/-1 -1/-1 delay_access 1 allow traffico_intranet delay_class 2 2 delay_parameters 2 100000/64000 100000/60000 delay_access 2 allow files_limitati