Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
PROBLEMA: limitare la banda con tc
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian)
View previous topic :: View next topic  
Author Message
nilo888
Tux's lil' helper
Tux's lil' helper


Joined: 17 Nov 2005
Posts: 84

PostPosted: Fri Feb 16, 2007 2:58 pm    Post subject: PROBLEMA: limitare la banda con tc Reply with quote

ciao a tutti,

sto facendo dei test per liimitare la banda flaggando i pacchetti con iptables

Code:

...
iptables -t mangle -A OUTPUT -d 192.168.0.10 --protocol tcp --sport 22 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -d 192.168.0.10 --protocol tcp --sport 20  -j MARK --set-mark 3
...


come vedete sulla porta 22 e 20: poi avviero' un trasferimento con scp e uno con ftp attivo(verificato)

i comandi tati a tc sono

Code:


+ tc qdisc add dev eth0 root handle 1: htb default 10
+ tc class add dev eth0 parent 1: classid 1:1 htb rate 80kbps burst 6k
+ tc class add dev eth0 parent 1:1 classid 1:10 htb rate 60kbps burst 6k prio 1
+ tc class add dev eth0 parent 1:1 classid 1:20 htb rate 60kbps burst 6k prio 2
+ tc class add dev eth0 parent 1:1 classid 1:30 htb rate 60kbps burst 6k prio 3
+ tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10
+ tc qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 10
+ tc qdisc add dev eth0 parent 1:30 handle 30: sfq perturb 10
+ tc filter add dev eth0 parent 1: protocol ip prio 1 handle 1 fw classid 1:10
+ tc filter add dev eth0 parent 1: protocol ip prio 2 handle 2 fw classid 1:20
+ tc filter add dev eth0 parent 1: protocol ip prio 3 handle 3 fw classid 1:30





questo e' quello che succede quando avvio ftp e ssh insieme su una lan100

tc -s class show dev eth0

Code:

class htb 1:1 root rate 640000bit ceil 640000bit burst 6Kb/8 mpu 0b overhead 0b cburst 1679b/8 mpu 0b overhead
 0b level 7
 Sent 132714660 bytes 96898 pkt (dropped 0, overlimits 0 requeues 0)
 rate 963840bit 83pps backlog 0b 0p requeues 0
 lended: 0 borrowed: 0 giants: 0
 tokens: -59999999 ctokens: -59999999

class htb 1:10 parent 1:1 leaf 10: prio 1 rate 480000bit ceil 480000bit burst 6Kb/8 mpu 0b overhead 0b cburst
1659b/8 mpu 0b overhead 0b level 0
 Sent 6654220 bytes 12710 pkt (dropped 0, overlimits 0 requeues 0)
 rate 2480bit 3pps backlog 0b 0p requeues 0
 lended: 12710 borrowed: 0 giants: 0
 tokens: 103902 ctokens: 27374

class htb 1:20 parent 1:1 leaf 20: prio 2 rate 480000bit ceil 480000bit burst 6Kb/8 mpu 0b overhead 0b cburst
1659b/8 mpu 0b overhead 0b level 0
 Sent 63009910 bytes 42543 pkt (dropped 0, overlimits 0 requeues 0)
 rate 480712bit 40pps backlog 0b 30p requeues 0
 lended: 42513 borrowed: 0 giants: 0
 tokens: 25846 ctokens: -50682

class htb 1:30 parent 1:1 leaf 30: prio 3 rate 480000bit ceil 480000bit burst 6Kb/8 mpu 0b overhead 0b cburst
1659b/8 mpu 0b overhead 0b level 0
 Sent 63145912 bytes 41708 pkt (dropped 0, overlimits 0 requeues 0)
 rate 480432bit 39pps backlog 0b 33p requeues 0
 lended: 41675 borrowed: 0 giants: 0
 tokens: 25557 ctokens: -50971



come vedete la limitazione di banda funziona quello che non finziona e' che la somma di tutto il traffico non dovrebbe superare i 80kbyte al secondo invece va a quasi 120... qualcuno mi sa spiegare come mai?
Back to top
View user's profile Send private message
noppy
Tux's lil' helper
Tux's lil' helper


Joined: 10 Dec 2003
Posts: 103

PostPosted: Fri Feb 16, 2007 3:27 pm    Post subject: Reply with quote

mmh , io uso una cosa di questo genere e mi funziona , pero' non uso iptables per marcare il traffico ma regole dirette con il filtro u32

Code:
tc qdisc add dev eth2 handle 1:0 root dsmark indices 8 default_index 0
tc qdisc add dev eth2 handle 2:0 parent 1:0 htb
tc class add dev eth2 parent 2:0 classid 2:1 htb rate 1310720bps ceil 1310720bps
tc class add dev eth2 parent 2:1 classid 2:2 htb rate 65536bps ceil 524288bps prio 0
tc qdisc add dev eth2 handle 3:0 parent 2:2 sfq
tc class add dev eth2 parent 2:1 classid 2:3 htb rate 65536bps ceil 1310720bps prio 0
tc qdisc add dev eth2 handle 4:0 parent 2:3 sfq
tc class add dev eth2 parent 2:1 classid 2:4 htb rate 65536bps ceil 1310720bps prio 0
tc qdisc add dev eth2 handle 5:0 parent 2:4 sfq
tc class add dev eth2 parent 2:1 classid 2:5 htb rate 32768bps ceil 1310720bps prio 1
tc qdisc add dev eth2 handle 6:0 parent 2:5 sfq
tc class add dev eth2 parent 2:1 classid 2:6 htb rate 32768bps ceil 1310720bps prio 1
tc qdisc add dev eth2 handle 7:0 parent 2:6 sfq
tc class add dev eth2 parent 2:1 classid 2:7 htb rate 16384bps ceil 1310720bps prio 1
tc qdisc add dev eth2 handle 8:0 parent 2:7 sfq
.... (regole u32) ....


P.S.
Il codice di TC e' generato da tcng che è un po' piu' umano per quanto riguarda il linguaggio
Back to top
View user's profile Send private message
nilo888
Tux's lil' helper
Tux's lil' helper


Joined: 17 Nov 2005
Posts: 84

PostPosted: Fri Feb 16, 2007 7:24 pm    Post subject: Reply with quote

si sembra abbastanza simile al mio...
ma quindi se tu riduci il rate e il ceil di
Code:

tc class add dev eth2 parent 2:0 classid 2:1 htb rate 1310720bps ceil 1310720bps


riesci a rallentare tutta la connessione? perche a me serve appunto che la connessione totale non superi fli 80kbyte per secondo:

Code:

+ tc class add dev eth0 parent 1: classid 1:1 htb rate 80kbps burst 6k


il che dovrebbe essere gia scritto qui^ no? ma non funge non vorrei che mi mancasse qualcosa...

insomma ssh e ftp che hanno al max 60kbyte/s ognuno si devono spartire 80kbyte/s di totale(scelto da me la connessione puo' andare molto di piu! Io riesco a limitare entrambi ai 60kbyte/s ma insieme arrivano a 120kbyte/s il che non dobrebbe accadere giusto?
Back to top
View user's profile Send private message
noppy
Tux's lil' helper
Tux's lil' helper


Joined: 10 Dec 2003
Posts: 103

PostPosted: Fri Feb 16, 2007 9:52 pm    Post subject: Reply with quote

si esatto ma credo ti manchi il ceil che se non ricordo male definisce la grandezza (in banda) della cella , altrimenti l'htb , sempre se ricordo bene , utilizza il massimo della banda per poi rallentarla al valore da te prescelto in base alle altre regole htb , ma visto che la root e' una cella unica senza il ceil mi sa che non limita un tubo ma usa tutta la banda .
Back to top
View user's profile Send private message
nilo888
Tux's lil' helper
Tux's lil' helper


Joined: 17 Nov 2005
Posts: 84

PostPosted: Sat Feb 17, 2007 1:03 am    Post subject: Reply with quote

No purtroppo no... il ceil se vedi nell'ultima sezione di codice del primo post

Code:

class htb 1:1 root rate 640000bit ceil 640000bit burst 6Kb/8 mpu 0b overhead 0b cburst

e' di default uguale al rate e ho provato anche a cambiarlo nello script ma non ha effetto

e' assurdo perche se vedi sempre in quel riquadro di codice che e' l'output della analisi mentre sta lavorando il rate effettivo e' maggiore di quello da me scelto e del ceil:

Code:

class htb 1:1 root rate 640000bit ceil 640000bit burst 6Kb/8 mpu 0b overhead 0b cburst 1679b/8 mpu 0b overhead
 0b level 7
 Sent 132714660 bytes 96898 pkt (dropped 0, overlimits 0 requeues 0)
 rate 963840bit 83pps backlog 0b 0p requeues 0
 lended: 0 borrowed: 0 giants: 0
 tokens: -59999999 ctokens: -59999999


Code:

...rate 640000bit ceil 640000bit....
,,,,
,,,rate 963840bit.....


non so che pensare.... cmq grazie lo stesso per l'aiuto!!!
Back to top
View user's profile Send private message
noppy
Tux's lil' helper
Tux's lil' helper


Joined: 10 Dec 2003
Posts: 103

PostPosted: Sat Feb 17, 2007 2:52 am    Post subject: Reply with quote

hai ragione , non avevo letto attentamente . Cmq è strano , anche se mi pare ci sia una nuova versione di htb che dovrebbe essere piu' rigorosa .

Quello che posso consigliarti , se non hai gia' provato , è di usare tcng e far creare a lui le regole di tc in modo da provare se per caso in questo modo risolvi il problema
Back to top
View user's profile Send private message
Merlink
Tux's lil' helper
Tux's lil' helper


Joined: 01 Sep 2004
Posts: 104
Location: Agrigento, Italy

PostPosted: Sat Feb 17, 2007 6:52 am    Post subject: Reply with quote

Anche io uso tc, anzi usavo...
Non avete avuto problemi di latenza?
Nel mio caso, con icmp in ingresso ed uscita nella coda a piu' alta priorità e senza traffico, il ping verso libero raggiungeva i 4000 msec.
Back to top
View user's profile Send private message
nilo888
Tux's lil' helper
Tux's lil' helper


Joined: 17 Nov 2005
Posts: 84

PostPosted: Sun Feb 18, 2007 8:35 pm    Post subject: Reply with quote

ok penso di esserci riuscito.

facendo un po di esperimenti sono arrivato a queste conclusioni empiriche:

1) il rate e' la banda garantita quindi se la somma del rate delle sottoclassi e' superiore a quella della classe (e anche del suo ceil) la cosa non funziona => si sorpassera' il rate della classe per soddisfare minimo garantito delle sottoclassi

2) se la somma del rate delle sottoclassi e' minore o uguale al rate (o ceil) della classe superiore non avverra' la superazione del ceil della classe superiore

in CONCLUSIONE
rate: banda garantita salvo superamento della banda massima dell'interfaccia

ceil: tetto al quale si puo arrivare se c'e' banda disponibile( fino al ceil della classe superiore o comunque alla saturazione della banda disponibile nella classe superiore,

Questo e' quanto ho capito io EMPIRICAMENTE e mi pare funzionante, se credete che io abbia sbagliato vi pregherei di correggermi. GRAZIE

ps I ping non ho provato a metterli in cima alla priorita' ma non ho problemi di latenza per ora..
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum