TRAFFIC SHAPING
SU SISTEMI LINUX


                   1
Due note sul traffic shaping
• Il traffic shaping riguarda la gestione dei flussi di
  traffico in un sistema
• Usi tipici...
Funzioni avanzate di gestione del traffico
• Idea di base:
   – I datagrammi IP vengono accodati prma di essere
     spedi...
Scenario di riferimento:
• Realizzara la rete rappresentata
  in figura
  USATE: linux-new!
• 3 nodi su una stessa sottore...
Installare I moduli necessari
• Installazione dei moduli:
   – Scheduler Token Bucket Filter (TBF):
     insmod /lib/modul...
Limitazione della banda complessiva
• # tc qdisc add dev eth0 root tbf rate  
  220kbit latency 50ms burst 1540
• Spiegazi...
Il token bucket filter
• la disciplina modella il traffico come un secchio (bucket) di
  monetine (token)
   – il secchio ...
Il token bucket filter
• Il TBF manda dati a ritmo costante. E' abbastanza preciso e
  CPU friendly
  → la presenza di vir...
Verifica dell'installazione
• interroghiamo il sistema chiedendo che queuing
  discipline sta usando:
• # tc qdisc show de...
Verificare il funzionamento del traffic shaper
• Scenario:
  – node1 macchina su cui abbiamo configurato il traffic
    sh...
Rimettiamo tutto a posto


• # tc qdisc del dev eth0 root
• Rimuoviamo la disciplina di coda “root” dal
  dispositivo eth0...
Limitazione della banda verso uno specifico host

• Dobbiamo classificare il traffico:          root
  – Usiamo una qdisc ...
Limitazione della banda verso un host
• # tc qdisc add dev eth0 root handle 1: prio  
  priomap 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
Cosa è successo?
• La prima riga definisce la root qdisc come “prio”
   – priomap indica come classificare il traffico in ...
Principali parametri di matching
• Dopo aver indicato “u32” (match su una qualsiasi
  parte del pacchetto) possiamo specif...
Verifica dell'installazione
• interroghiamo il sistema chiedendo che queuing discipline
  sta usando e che filtri ha:
• # ...
Verificare il funzionamento del traffic shaper
• Scenario:
   – node1 macchina su cui abbiamo configurato il traffic shape...
Esercizio




   LAN

                                               Iinternet



Banda differente per Nodo3 e Node2 per a...
Approfondimento
• Per saperne di più su iproute 2 e traffic shaping:
  – Linux Advanced Routing & Traffic Control
    http...
Upcoming SlideShare
Loading in …5
×

Traffic Shaping Su Linux

3,652 views
3,558 views

Published on

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,652
On SlideShare
0
From Embeds
0
Number of Embeds
19
Actions
Shares
0
Downloads
21
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Traffic Shaping Su Linux

  1. 1. TRAFFIC SHAPING SU SISTEMI LINUX 1
  2. 2. Due note sul traffic shaping • Il traffic shaping riguarda la gestione dei flussi di traffico in un sistema • Usi tipici: – Riduzione della banda passante per alcuni tipi di traffico – Prioritizzazione del traffico (e.g., un ISP ha utenti “gold” e “silver”) • Noi presentiamo due esempi molto semplici – Limitazione della banda complessiva in output – Limitazione della banda verso uno specifico host • Ci si concentra sul caso di un sistema linux – Uso dei tool forniti nella suite iproute 2 2
  3. 3. Funzioni avanzate di gestione del traffico • Idea di base: – I datagrammi IP vengono accodati prma di essere spediti – La getione della coda dei datagrammi è gestita da una queuing discipline – Si interviene sulla queuing discipline per fare traffic shaping • Nel kernel di linux ho tante possibili queuing discipline 3
  4. 4. Scenario di riferimento: • Realizzara la rete rappresentata in figura USATE: linux-new! • 3 nodi su una stessa sottorete • Installare I moduli del kernel per il traffic shaping – I moduli si trovano nella directory: /lib/modules/<versione>/... – Sono file con estensione .ko (kernel object) – Si installano con il comando insmod (modprobe ha dei problemi) 4
  5. 5. Installare I moduli necessari • Installazione dei moduli: – Scheduler Token Bucket Filter (TBF): insmod /lib/modules/2.6.30/kernel/net/sched/sch_tbf.ko – Scheduler Priority (PRIO): insmod /lib/modules/2.6.30/kernel/net/sched/sch_prio.ko – Classificatore di traffico u32: insmod /lib/modules/2.6.30/kernel/net/sched/cls_u32.ko insmod /lib/modules/2.6.30/kernel/net/sched/em_u32.ko – Verifica dell'installazione: lsmod • Senza questi moduli I tentativi di usare il traffic shaping terminano con messaggi di errore di tipo “file not found” • I moduli devono essere riferiti alla stessa versione del kernel UML che si usa! (USATE: linux-new) 5
  6. 6. Limitazione della banda complessiva • # tc qdisc add dev eth0 root tbf rate   220kbit latency 50ms burst 1540 • Spiegazione: – tc: comando per interagire con il controllo del traffico – qdisc: mi interessa variare le discipline di coda – add: aggiungo un disciplina di coda – dev eth0: lavoro sulla prima interfaccia di rete – root: la disciplina di coda è la prima disciplina che usiamo (posso creare una gerarchia ad albero di discipline diverse e concatenate) – tbf: token bucket filter, disciplina per limitare la banda – seguono parametri della disciplina 6
  7. 7. Il token bucket filter • la disciplina modella il traffico come un secchio (bucket) di monetine (token) – il secchio si riempie a ritmo costante – Ogni volta che devo spedire dei dati consumo monetine – Se non ho abbastanza monetine nel secchio aspetto che si riempia (overlimit) 7
  8. 8. Il token bucket filter • Il TBF manda dati a ritmo costante. E' abbastanza preciso e CPU friendly → la presenza di virtualizzazione tuttavia ne altera le prestazioni in modo sensibile • Parametri: – rate: il ritmo a cui riempio il secchio – burst: la dimensione del secchio (serve per compensare il fatto che il flusso di monetine e l'invio dei dati sono discreti nel tempo) 8
  9. 9. Verifica dell'installazione • interroghiamo il sistema chiedendo che queuing discipline sta usando: • # tc qdisc show dev eth0 qdisc tbf 8008: rate 220000bit burst 1539b  lat 48.8ms 9
  10. 10. Verificare il funzionamento del traffic shaper • Scenario: – node1 macchina su cui abbiamo configurato il traffic shaper – node2 una macchina che usiamo per il test • Creiamo un file sulla macchina node1: – dd if=/dev/zero of=prova.data bs=1024  count=10000 crea un file di circa 10 M pieno di byte nulli • Copiamo il file dalla macchina node2 – dalla macchina node2 lanciamo: scp node1:prova.data . – durante il download viene mostrata la banda utilizzata 10
  11. 11. Rimettiamo tutto a posto • # tc qdisc del dev eth0 root • Rimuoviamo la disciplina di coda “root” dal dispositivo eth0 11
  12. 12. Limitazione della banda verso uno specifico host • Dobbiamo classificare il traffico: root – Usiamo una qdisc di tipo PRIO che consente di stabilire tre PRIO 1: classi – Ad una classe associamo un TBF per il traffic shaping – Mettiamo un filtro che dirotta in 1:1 1:2 1:3 quella classe tutto il traffico diretto ad un certo nodo TBF 20: 12
  13. 13. Limitazione della banda verso un host • # tc qdisc add dev eth0 root handle 1: prio   priomap 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 • # tc qdisc add dev eth0 parent 1:2 tbf rate   220kbit latency 50ms burst 1540 • # tc filter add dev eth0 protocol ip parent   1:0 prio 1 u32 match ip dst 192.168.1.2/32   flowid 1:2 • # tc filter add dev eth0 protocol ip parent   1:0 prio 2 u32 match ip dst 0.0.0.0/0   flowid 1:1 13
  14. 14. Cosa è successo? • La prima riga definisce la root qdisc come “prio” – priomap indica come classificare il traffico in funzione dei bit “TOS” del datagramma IP. – Alla classe :2 dello scheduler “prio” associamo il traffic shaper – Mettiamo un primo filtro ad alta priorità (prio 1) che intercetta il traffico diretto verso 192.168.1.2 (ip dst 192.168.1.2/32) e lo mette nelle classe :2 (flowid 1:2) – Mettiamo un ultimo filtro a bassa priorità che fa il matching del resto e lo mette nella classe :1 14
  15. 15. Principali parametri di matching • Dopo aver indicato “u32” (match su una qualsiasi parte del pacchetto) possiamo specificare il campo • In base all'indirizzo ip sorgente/destinazione – match ip src 1.2.3.0/24 – match ip dst 1.2.3.0/24 • In base alla porta sorgente/destinazione – match ip sport 80 0xffff – match ip dport 80 0xffff • In base al protocollo (tcp, udp, icmp, gre, ipsec) Facendo riferimento ai numeri presenti in /etc/protocols. Per esempio icmp è 1: – match ip protocol 1 0xff 15
  16. 16. Verifica dell'installazione • interroghiamo il sistema chiedendo che queuing discipline sta usando e che filtri ha: • # tc qdisc show dev eth0 qdisc prio 1: bands 3 priomap 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 qdisc tbf 800c: parent 1:2 rate 220000bit burst 1539b lat 48.8ms • # tc filter show dev eth0 filter parent 1: protocol ip pref 1 u32 filter parent 1: protocol ip pref 1 u32 fh 800: ht divisor 1 filter parent 1: protocol ip pref 1 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:2 match 9bb90179/ffffffff at 16 filter parent 1: protocol ip pref 2 u32 filter parent 1: protocol ip pref 2 u32 fh 801: ht divisor 1 filter parent 1: protocol ip pref 2 u32 fh 801::800 order 2048 key ht 801 bkt 0 flowid 1:1 match 00000000/00000000 at 16 16
  17. 17. Verificare il funzionamento del traffic shaper • Scenario: – node1 macchina su cui abbiamo configurato il traffic shaper – node2 e node3 macchine che usiamo per il test • Creiamo il solito file sulla macchina LOCALE: – dd if=/dev/zero of=prova.data bs=1024 count=10000 • Copiamo il file dalla macchina node1 e node2. Da node 2 scp node1:prova.data . – durante il download viene mostrata la banda utilizzata • Copiamo il file dalla macchina node1 e node3. Da node 3 scp node1:prova.data . – durante il download viene mostrata la banda utilizzata • Le bande mostrate durante la copia sono differenti 17
  18. 18. Esercizio LAN Iinternet Banda differente per Nodo3 e Node2 per accedere a Internet 18
  19. 19. Approfondimento • Per saperne di più su iproute 2 e traffic shaping: – Linux Advanced Routing & Traffic Control http://lartc.org – Howto online: http://lartc.org/howto/ (è anche possibile scaricarlo in formato pdf) – man pages 19

×