SlideShare a Scribd company logo
1 of 19
Download to read offline
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:
   – 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
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
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
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
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
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
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
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
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
Rimettiamo tutto a posto


• # tc qdisc del dev eth0 root
• Rimuoviamo la disciplina di coda “root” dal
  dispositivo eth0




                                                11
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
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
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
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
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
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
Esercizio




   LAN

                                               Iinternet



Banda differente per Nodo3 e Node2 per accedere a Internet
                                                             18
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

More Related Content

Viewers also liked

esercizio sigda n 11
esercizio sigda n 11esercizio sigda n 11
esercizio sigda n 11Majong DevJfu
 
Linguaggi Formali e Compilazione: Frontend
Linguaggi Formali e Compilazione: FrontendLinguaggi Formali e Compilazione: Frontend
Linguaggi Formali e Compilazione: FrontendMajong DevJfu
 
5 Trasporto Affidabile Teoria
5 Trasporto Affidabile Teoria5 Trasporto Affidabile Teoria
5 Trasporto Affidabile TeoriaMajong DevJfu
 
Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03Majong DevJfu
 
4 Livello Ip Parte1 Color
4 Livello Ip Parte1 Color4 Livello Ip Parte1 Color
4 Livello Ip Parte1 ColorMajong DevJfu
 
Architettura dei Calcolatori Subroutines80x86
Architettura dei Calcolatori Subroutines80x86Architettura dei Calcolatori Subroutines80x86
Architettura dei Calcolatori Subroutines80x86Majong DevJfu
 
2 sistemi informativi d azienda
2 sistemi informativi d azienda2 sistemi informativi d azienda
2 sistemi informativi d aziendaMajong DevJfu
 
Sistemi Operativi: Struttura - Lezione 04
Sistemi Operativi: Struttura - Lezione 04Sistemi Operativi: Struttura - Lezione 04
Sistemi Operativi: Struttura - Lezione 04Majong DevJfu
 
Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05Majong DevJfu
 
Sistemi Operativi: Processi - Lezione 07
Sistemi Operativi: Processi - Lezione 07Sistemi Operativi: Processi - Lezione 07
Sistemi Operativi: Processi - Lezione 07Majong DevJfu
 
Calcolo Numerico - 2 - Numeri Di Macchina
Calcolo Numerico - 2 - Numeri Di MacchinaCalcolo Numerico - 2 - Numeri Di Macchina
Calcolo Numerico - 2 - Numeri Di MacchinaMajong DevJfu
 
Introduzione a Linguaggi formali e compilazione
Introduzione a Linguaggi formali e compilazioneIntroduzione a Linguaggi formali e compilazione
Introduzione a Linguaggi formali e compilazioneMajong DevJfu
 
Sistemi Operativi: Introduzione - Lezione 01
Sistemi Operativi: Introduzione - Lezione 01Sistemi Operativi: Introduzione - Lezione 01
Sistemi Operativi: Introduzione - Lezione 01Majong DevJfu
 
Linguaggi Formali e Compilazione: Automi
Linguaggi Formali e Compilazione: AutomiLinguaggi Formali e Compilazione: Automi
Linguaggi Formali e Compilazione: AutomiMajong DevJfu
 

Viewers also liked (20)

E6 Concorre
E6 ConcorreE6 Concorre
E6 Concorre
 
esercizio sigda n 11
esercizio sigda n 11esercizio sigda n 11
esercizio sigda n 11
 
Linguaggi Formali e Compilazione: Frontend
Linguaggi Formali e Compilazione: FrontendLinguaggi Formali e Compilazione: Frontend
Linguaggi Formali e Compilazione: Frontend
 
5 Trasporto Affidabile Teoria
5 Trasporto Affidabile Teoria5 Trasporto Affidabile Teoria
5 Trasporto Affidabile Teoria
 
Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03
 
4 Livello Ip Parte1 Color
4 Livello Ip Parte1 Color4 Livello Ip Parte1 Color
4 Livello Ip Parte1 Color
 
Architettura dei Calcolatori Subroutines80x86
Architettura dei Calcolatori Subroutines80x86Architettura dei Calcolatori Subroutines80x86
Architettura dei Calcolatori Subroutines80x86
 
2 sistemi informativi d azienda
2 sistemi informativi d azienda2 sistemi informativi d azienda
2 sistemi informativi d azienda
 
Sistemi Operativi: Struttura - Lezione 04
Sistemi Operativi: Struttura - Lezione 04Sistemi Operativi: Struttura - Lezione 04
Sistemi Operativi: Struttura - Lezione 04
 
8 Www2009 Parte1
8 Www2009 Parte18 Www2009 Parte1
8 Www2009 Parte1
 
3 H2 N Parte3
3 H2 N Parte33 H2 N Parte3
3 H2 N Parte3
 
6 Dns Parte2
6 Dns Parte26 Dns Parte2
6 Dns Parte2
 
Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05
 
9 Ftp Telnet Email
9 Ftp Telnet Email9 Ftp Telnet Email
9 Ftp Telnet Email
 
Sistemi Operativi: Processi - Lezione 07
Sistemi Operativi: Processi - Lezione 07Sistemi Operativi: Processi - Lezione 07
Sistemi Operativi: Processi - Lezione 07
 
esercizio sigda n 8
esercizio sigda n 8esercizio sigda n 8
esercizio sigda n 8
 
Calcolo Numerico - 2 - Numeri Di Macchina
Calcolo Numerico - 2 - Numeri Di MacchinaCalcolo Numerico - 2 - Numeri Di Macchina
Calcolo Numerico - 2 - Numeri Di Macchina
 
Introduzione a Linguaggi formali e compilazione
Introduzione a Linguaggi formali e compilazioneIntroduzione a Linguaggi formali e compilazione
Introduzione a Linguaggi formali e compilazione
 
Sistemi Operativi: Introduzione - Lezione 01
Sistemi Operativi: Introduzione - Lezione 01Sistemi Operativi: Introduzione - Lezione 01
Sistemi Operativi: Introduzione - Lezione 01
 
Linguaggi Formali e Compilazione: Automi
Linguaggi Formali e Compilazione: AutomiLinguaggi Formali e Compilazione: Automi
Linguaggi Formali e Compilazione: Automi
 

Similar to Traffic Shaping Su Linux

From Scratch To Network - User mode linux
From Scratch To Network - User mode linuxFrom Scratch To Network - User mode linux
From Scratch To Network - User mode linuxMajong DevJfu
 
Network_Forensics_Analysis_Tool.pptx
Network_Forensics_Analysis_Tool.pptxNetwork_Forensics_Analysis_Tool.pptx
Network_Forensics_Analysis_Tool.pptxManlioSantonastaso
 
Wan data link protocols
Wan data link protocolsWan data link protocols
Wan data link protocolss_Morpheus
 
Introduzione Alla Uml Mconsole
Introduzione Alla Uml MconsoleIntroduzione Alla Uml Mconsole
Introduzione Alla Uml MconsoleMajong DevJfu
 
Pf e netfilter, analisi dei firewall open source
Pf e netfilter, analisi dei firewall open sourcePf e netfilter, analisi dei firewall open source
Pf e netfilter, analisi dei firewall open sourceGiovanni Bechis
 
Network configuration - IPTables firewall
 Network configuration - IPTables firewall Network configuration - IPTables firewall
Network configuration - IPTables firewallFulvio Corno
 
A short introduction about traffic shaping and K-Shaper tool --- speech at Ha...
A short introduction about traffic shaping and K-Shaper tool --- speech at Ha...A short introduction about traffic shaping and K-Shaper tool --- speech at Ha...
A short introduction about traffic shaping and K-Shaper tool --- speech at Ha...Massimiliano Leone
 
Soluzioni per la difesa da attacchi DoS nelle reti SDN
Soluzioni per la difesa da attacchi DoS nelle reti SDNSoluzioni per la difesa da attacchi DoS nelle reti SDN
Soluzioni per la difesa da attacchi DoS nelle reti SDNMatteo D'Amore
 
02 - Introduzione a Internet (I)
02 - Introduzione a Internet (I)02 - Introduzione a Internet (I)
02 - Introduzione a Internet (I)Giuseppe Vizzari
 
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL ClusterMySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL ClusterPar-Tec S.p.A.
 
Open Source Parallel Computing ltcsp
Open Source Parallel Computing ltcspOpen Source Parallel Computing ltcsp
Open Source Parallel Computing ltcspLaura Camellini
 
Introduzione a Internet (1/2) - 18/19
Introduzione a Internet (1/2) - 18/19Introduzione a Internet (1/2) - 18/19
Introduzione a Internet (1/2) - 18/19Giuseppe Vizzari
 
Polito v3 (2011 01-19)
Polito v3 (2011 01-19)Polito v3 (2011 01-19)
Polito v3 (2011 01-19)Luca Cicchelli
 
Richiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatoriRichiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatoriFulvio Corno
 

Similar to Traffic Shaping Su Linux (20)

Packet Sniffing
Packet SniffingPacket Sniffing
Packet Sniffing
 
From Scratch To Network - User mode linux
From Scratch To Network - User mode linuxFrom Scratch To Network - User mode linux
From Scratch To Network - User mode linux
 
TCP IP
TCP IPTCP IP
TCP IP
 
Network_Forensics_Analysis_Tool.pptx
Network_Forensics_Analysis_Tool.pptxNetwork_Forensics_Analysis_Tool.pptx
Network_Forensics_Analysis_Tool.pptx
 
Wan data link protocols
Wan data link protocolsWan data link protocols
Wan data link protocols
 
Introduzione Alla Uml Mconsole
Introduzione Alla Uml MconsoleIntroduzione Alla Uml Mconsole
Introduzione Alla Uml Mconsole
 
Pf e netfilter, analisi dei firewall open source
Pf e netfilter, analisi dei firewall open sourcePf e netfilter, analisi dei firewall open source
Pf e netfilter, analisi dei firewall open source
 
Network configuration - IPTables firewall
 Network configuration - IPTables firewall Network configuration - IPTables firewall
Network configuration - IPTables firewall
 
A short introduction about traffic shaping and K-Shaper tool --- speech at Ha...
A short introduction about traffic shaping and K-Shaper tool --- speech at Ha...A short introduction about traffic shaping and K-Shaper tool --- speech at Ha...
A short introduction about traffic shaping and K-Shaper tool --- speech at Ha...
 
Soluzioni per la difesa da attacchi DoS nelle reti SDN
Soluzioni per la difesa da attacchi DoS nelle reti SDNSoluzioni per la difesa da attacchi DoS nelle reti SDN
Soluzioni per la difesa da attacchi DoS nelle reti SDN
 
02 - Introduzione a Internet (I)
02 - Introduzione a Internet (I)02 - Introduzione a Internet (I)
02 - Introduzione a Internet (I)
 
Progetto Netkit
Progetto NetkitProgetto Netkit
Progetto Netkit
 
Bello Jxta Intro
Bello Jxta IntroBello Jxta Intro
Bello Jxta Intro
 
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL ClusterMySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
 
Open Source Parallel Computing ltcsp
Open Source Parallel Computing ltcspOpen Source Parallel Computing ltcsp
Open Source Parallel Computing ltcsp
 
Thread
ThreadThread
Thread
 
LTSP
LTSPLTSP
LTSP
 
Introduzione a Internet (1/2) - 18/19
Introduzione a Internet (1/2) - 18/19Introduzione a Internet (1/2) - 18/19
Introduzione a Internet (1/2) - 18/19
 
Polito v3 (2011 01-19)
Polito v3 (2011 01-19)Polito v3 (2011 01-19)
Polito v3 (2011 01-19)
 
Richiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatoriRichiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatori
 

More from Majong DevJfu

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA CloudMajong DevJfu
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processesMajong DevJfu
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product lineMajong DevJfu
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformationMajong DevJfu
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven ArchitectureMajong DevJfu
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture PortfolioMajong DevJfu
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural stylesMajong DevJfu
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architectureMajong DevJfu
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a productMajong DevJfu
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural stylesMajong DevJfu
 

More from Majong DevJfu (20)

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product line
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles
 
Uml3
Uml3Uml3
Uml3
 
Uml2
Uml2Uml2
Uml2
 
6
66
6
 
5
55
5
 
4 (uml basic)
4 (uml basic)4 (uml basic)
4 (uml basic)
 
3
33
3
 
2
22
2
 
1
11
1
 
Tmd template-sand
Tmd template-sandTmd template-sand
Tmd template-sand
 
26 standards
26 standards26 standards
26 standards
 

Traffic Shaping Su Linux

  • 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. 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. 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. 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. 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. 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. 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. 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. 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. Rimettiamo tutto a posto • # tc qdisc del dev eth0 root • Rimuoviamo la disciplina di coda “root” dal dispositivo eth0 11
  • 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. 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. 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. 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. 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. 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. Esercizio LAN Iinternet Banda differente per Nodo3 e Node2 per accedere a Internet 18
  • 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