Traffic Shaping con cbq.init: Difference between revisions

From RVM Wiki
Jump to navigation Jump to search
No edit summary
 
Line 151: Line 151:


<pre>
<pre>
cat >etc/shaper/cbq-256.eth1_smtp <<EOFile
cat > /etc/shaper/cbq-256.eth1_smtp <<EOFile
DEVICE=eth1,100Mbit,10Mbit
DEVICE=eth1,100Mbit,10Mbit
RATE=256Kbit
RATE=256Kbit

Revision as of 14:34, 29 November 2005

E' possibile limitare l'uso della banda utilizzando il paccheto "shaper"

Documentazione da consultare

/usr/share/doc/shaper/README.Debian

/usr/share/doc/shaper/README.shaper.gz

http://www.faqs.org/docs/Linux-HOWTO/ADSL-Bandwidth-Management-HOWTO.html

http://www.faqs.org/docs/Linux-HOWTO/Bandwidth-Limiting-HOWTO.html

Esempio

Si suppone di operare su un gateway con 2 schede di rete:

                    +---------+      192.168.1.1
 INTERNET -----eth1-|  linux  |-eth0------*-[LAN]
                    +---------+

Installazione del pacchetto

apt-get install shaper

Misurazione della banda effettiva

Prima di tutto bisogna misurare la banda effettiva di downstream/upstream.

Assicurarsi che non ci sia nessun altro tipo di traffico sulla rete. Eventualmente stoppare demoni come postfix o apache.

Monitorare il traffico sull'interfaccia WAN con iftop:

iftop -Nn -i eth1

Creare un file di circa 10 Mega con dd,e provare a copiarlo via scp (attenzione a non aver impostata la compressione esplicitmente nel file .ssh/config):

scp 10mega gabriele.vivinetto@support.rvmgroup.it:/tmp

Verificare la banda di upload in iftop.

Naturalmente la banda in downstream della connessione di destinazione deve essere superiore a quella di upstream della connessione sorgente, in modo da saturarla.

Fare l'inverso (copiare un file da una macchina verso la propria) per misurare il downstream (o scaricare un file da un sito).

Supponiamo che la banda misurata di upload sia di circa 512kb/s ed il downstream sia di 1280Kb/s

Limitazione della banda di upload per un servizio

Se vogliamo limitare, ad esempio, la banda usata per l'invio della posta (porta 25), possiamo procedere come segue:

Creazione del file di configurazione di prova

Lo shaper legge tutti i files in /etc/shaper che si chiamano

cbq-classid.nome

classid è un valore in esadecimale, che per comodità si sceglie uguale alla banda limitata.

Creare il file /etc/shaper/cbq-256.eth1_smtp:

cat >etc/shaper/cbq-256.eth1_smtp <<EOFile
DEVICE=eth1,100Mbit,10Mbit
# Operiamo sul traffico in uscita dalla eth1. Possiamo modificare solo il traffico IN USCITA da un'interfaccia
# La banda fisica è di 100Mbit/s, utiliziamo una soglia di monitoraggio di 10Mbit/s
RATE=256Kbit
# Limitiamo la banda utilizzata a 256kbit
WEIGHT=10Kbit
# utilizziamo una soglia di monitoraggio di 10 kbit
PRIO=5
# non serve in questo caso
RULE=:22
# questi parametri vanno applicati al traffico con destinazione porta 22 (ssh)
EOFile

Con queste regola, possiamo testare il tutto con scp.

Avvio dello shaper

Attiviamo le regole:

/etc/init.d/shaper start

Potrebbe verificarsi l'errore:

Starting CBQ traffic shaping: RTNETLINK answers: No such file or directory
shaper.

E' ignorabile.

Verifica della presenza delle regole

Elenchiamo le regole:

/etc/init.d/shaper list
### eth0: queueing disciplines

qdisc pfifo_fast 0: bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

### eth1: queueing disciplines

qdisc cbq 1: rate 100000Kbit (bounded,isolated) prio no-transmit
qdisc tbf 256: rate 256000bit burst 10Kb lat 156.2ms

### eth1: traffic classes

class cbq 1: root rate 100000Kbit (bounded,isolated) prio no-transmit
class cbq 1:256 parent 1: leaf 256: rate 256000bit (bounded) prio 5
class tbf 256:1 parent 256:

### eth1: filtering rules

filter parent 1: protocol ip pref 100 u32
filter parent 1: protocol ip pref 100 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 100 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:256
  match 00000016/0000ffff at 20

### tun0: queueing disciplines

qdisc pfifo_fast 0: bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

### tap0: queueing disciplines

qdisc pfifo_fast 0: bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

Quello che ci interessa è questo:

class cbq 1:256 parent 1: leaf 256: rate 256000bit (bounded) prio 5

Il rate limit del flusso 1:256 a 256kbit

e questo:

 filter parent 1: protocol ip pref 100 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:256
  match 00000016/0000ffff at 20

Il flusso 1:256 è quello relativo alla porta 22 = 16 HEX

Verifica della limitazione

Copiamo ancora il file da 10 Mb, e questa volta iftop dovrebbe mostrare che la velocità di upload massima è di 256kbit/sec.

Applicazione della configurazione definitiva

Cambiamo ora la porta 22 in quella 25, per l'smtp:

cat > /etc/shaper/cbq-256.eth1_smtp <<EOFile
DEVICE=eth1,100Mbit,10Mbit
RATE=256Kbit
WEIGHT=10Kbit
PRIO=5
RULE=:25
EOFile

Stoppiamo e riavviamo lo shaper:

/etc/init.d/shaper stop; /etc/init.d/shaper start