Corso di sistemi e reti. Per informatica. Per le Scuole superiori. Con e-book. Con espansione online. IP. Internetworking LAN/WAN (Vol. 2) 8808145298, 9788808145291

Corso di sistemi e reti. Per informatica. Per le Scuole superiori. Con e-book. Con espansione online: 2

343 104 5MB

Italian Pages 200 [199] Year 2013

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

Corso di sistemi e reti. Per informatica. Per le Scuole superiori. Con e-book. Con espansione online. IP. Internetworking LAN/WAN (Vol. 2)
 8808145298, 9788808145291

Citation preview

1 2 3

Idee per il tuo futuro

Paolo Ollari

Corso di sistemi e reti per Informatica IP. Internetworking LAN/WAN

TECNOLOGIA

Paolo Ollari

Corso di sistemi e reti per Informatica IP. Internetworking LAN/WAN

Copyright © 2013 Zanichelli editore S.p.A., Bologna [4169] www.zanichelli.it I diritti di elaborazione in qualsiasi forma o opera, di memorizzazione anche digitale su supporti di qualsiasi tipo (inclusi magnetici e ottici), di riproduzione e di adattamento totale o parziale con qualsiasi mezzo (compresi i microfilm e le copie fotostatiche), i diritti di noleggio, di prestito e di traduzione sono riservati per tutti i paesi. L’acquisto della presente copia dell’opera non implica il trasferimento dei suddetti diritti né li esaurisce.

Per le riproduzioni ad uso non personale (ad esempio: professionale, economico, commerciale, strumenti di studio collettivi, come dispense e simili) l’editore potrà concedere a pagamento l’autorizzazione a riprodurre un numero di pagine non superiore al 15% delle pagine del presente volume. Le richieste per tale tipo di riproduzione vanno inoltrate a Centro Licenze e Autorizzazioni per le Riproduzioni Editoriali (CLEARedi) Corso di Porta Romana, n.108 20122 Milano e-mail [email protected] e sito web www.clearedi.org L’editore, per quanto di propria spettanza, considera rare le opere fuori del proprio catalogo editoriale, consultabile al sito www.zanichelli.it/f_catalog.html. La fotocopia dei soli esemplari esistenti nelle biblioteche di tali opere è consentita, oltre il limite del 15%, non essendo concorrenziale all’opera. Non possono considerarsi rare le opere di cui esiste, nel catalogo dell’editore, una successiva edizione, le opere presenti in cataloghi di altri editori o le opere antologiche. Nei contratti di cessione è esclusa, per biblioteche, istituti di istruzione, musei ed archivi, la facoltà di cui all’art. 71 - ter legge diritto d’autore. Maggiori informazioni sul nostro sito: www.zanichelli.it/fotocopie/

Realizzazione editoriale: – Coordinamento editoriale: Matteo Fornesi – Collaborazione redazionale, impaginazione e illustrazioni: Conedit Libri, Cormano (MI) – Progetto grafico: Editta Gelsomini – Segreteria di redazione: Deborah Lorenzini Copertina: – Progetto grafico: Miguel Sal & C., Bologna – Realizzazione: Roberto Marchetti – Immagine di copertina: Artwork Miguel Sal, Bologna Prima edizione: gennaio 2013

L’impegno a mantenere invariato il contenuto di questo volume per un quinquennio (art. 5 legge n. 169/2008) è comunicato nel catalogo Zanichelli, disponibile anche online sul sito www.zanichelli.it, ai sensi del DM 41 dell’8 aprile 2009, All. 1/B. Zanichelli garantisce che le risorse digitali di questo volume sotto il suo controllo saranno accessibili, a partire dall’acquisto dell’esemplare nuovo, per tutta la durata della normale utilizzazione didattica dell’opera. Passato questo periodo, alcune o tutte le risorse potrebbero non essere più accessibili o disponibili: per maggiori informazioni, leggi my.zanichelli.it/fuoricatalogo File per diversamente abili L’editore mette a disposizione degli studenti non vedenti, ipovedenti, disabili motori o con disturbi specifici di apprendimento i file pdf in cui sono memorizzate le pagine di questo libro. Il formato del file permette l’ingrandimento dei caratteri del testo e la lettura mediante software screen reader. Le informazioni su come ottenere i file sono sul sito www.zanichelli.it/diversamenteabili Suggerimenti e segnalazione degli errori Realizzare un libro è un’operazione complessa, che richiede numerosi controlli: sul testo, sulle immagini e sulle relazioni che si stabiliscono tra essi. L’esperienza suggerisce che è praticamente impossibile pubblicare un libro privo di errori. Saremo quindi grati ai lettori che vorranno segnalarceli. Per segnalazioni o suggerimenti relativi a questo libro scrivere al seguente indirizzo: [email protected] Le correzioni di eventuali errori presenti nel testo sono pubblicate nel sito www.zanichelli.it/aggiornamenti Zanichelli editore S.p.A. opera con sistema qualità certificato CertiCarGraf n. 477 secondo la norma UNI EN ISO 9001: 2008

Paolo Ollari

Corso di sistemi e reti per Informatica IP. Internetworking LAN/WAN

TECNOLOGIA

Indice

SEZIONE

A

Reti. Tecnologie e protocolli di instradamento per le reti LAN

A1 Tecnologia IEEE 802.3 1 2 3 4

MAC di Ethernet Il pacchetto MAC Dominio di broadcast Dominio di collisione

3 5 10 13 16 17 19

ESERCIZI PER LA VERIFICA ORALE ESERCIZI PER LA VERIFICA SCRITTA ESERCIZI PER LA VERIFICA DI LABORATORIO

A2 Dispositivi e instradamento 1 2 3 4 5 6 7 8

Ripetitore Concentratore Switch Bridge Switch full duplex Managed switch (VLAN) Switch virtuali Traffico e dimensionamento

20 21 23 29 33 36 40 43 50 51 54

ESERCIZI PER LA VERIFICA ORALE ESERCIZI PER LA VERIFICA SCRITTA ESERCIZI PER LA VERIFICA DI LABORATORIO

A3 Tecnologia IEEE 802.11 1 2

Modelli e terminologia MAC di IEEE 802.11

57 58 Indice

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

V

3 4

Modalità infrastruttura Il pacchetto MAC

ESERCIZI PER LA VERIFICA ORALE ESERCIZI PER LA VERIFICA SCRITTA E DI LABORATORIO

60 61 67 68

A4 Spedire e leggere su LAN: pcap 1 2 3

tcpdump/WinDump Spedire un pacchetto sulla LAN (Win32) Spedire un pacchetto sulla LAN (Java)

70 71 75

A5 Bluetooth 1 2

Modelli e topologie Protocolli

ESERCIZI PER LA VERIFICA ORALE

SEZIONE

B

78 80 82

Reti. Protocolli di indirizzamento e instradamento per le reti WAN

B1 Il livello 3: Rete 1 2 3 4 5 6

Routing Routing CNLS: by network address Routing CONS: label swapping Algoritmi di instradamento Algoritmi distance vector Algoritmi link state packet

ESERCIZI PER LA VERIFICA ORALE ESERCIZI PER LA VERIFICA SCRITTA ESERCIZI PER LA VERIFICA DI LABORATORIO

85 88 91 93 95 98 100 101 103

B2 Protocollo IP 1 2 3 4

Protocollo ARP Pacchetto IP Protocollo ICMP Programma ping

ESERCIZI PER LA VERIFICA ORALE ESERCIZI PER LA VERIFICA SCRITTA

VI

Indice Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

105 108 113 117 120 121

B3 Indirizzamento IP 1 2 3 4 5 6 7 8

Classful Instradamento classful Subnetting Instradamento con subnetting Internetwork Il programma route Supernetting Autonomous System

124 127 131 135 138 141 142 145 147 148

ESERCIZI PER LA VERIFICA ORALE ESERCIZI PER LA VERIFICA SCRITTA

B4 Protocollo MPLS 1 2 3

Architettura Routing Pacchetto MPLS

154 155 156

B5 I protocolli di routing 1 2 3 4

RIP OSPF BGP Internet Service Provider

159 160 160 161 164

ESERCIZI PER LA VERIFICA ORALE

Appendice 1 2 3 4 5 6 7 8 9 10 11

Installazione libcap/WinPcap per Linux e Windows Ping VLSM WiMAX e LTE IPv6 Programmi Java Link State Packet Programma arp ARP, ICMP, IP Subnetting e VLSM TdI, inoltro e ICMP Redirect

Indice analitico

165 166 168 169 171 175 183 184 185 187 188

189

Indice Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

VII

SEZIONE

A

Reti. Tecnologie e protocolli di instradamento per le reti LAN Per affrontare adeguatamente i temi contenuti in questa sezione bisogna avere una sufficiente competenza su alcuni argomenti prerequisiti. Per verificare se la conoscenza necessaria degli argomenti è sufficiente, svolgere questa breve attività di autovalutazione. Se non si è in grado di rispondere a una domanda o si è solo parzialmente certi della risposta data, è meglio considerare la risposta come errata ai fini dell’autovalutazione. 1 a

257 e 257

Il numero 257 decimale equivale ai numeri binari ed esadecimali b 1111111b e FGh c 100000001b e 101h d

100000001b e f1h

2

Il codice Ascii esadecimale del carattere 0 (zero) è b 48 c 40h 30h

d

0

punto-punto

In una rete LAN la comunicazione generale segue il modello b broadcast c simplex

d

di Hamming

La topologia logica di una rete LAN è tipicamente a b mesh c bus

d

virtuale

a 3 a 4 a 5

maglia

I dispositivi di interconnessione tipici per reti LAN e reti WAN sono rispettivamente b modem e Access Point

a

router e switch

c

switch e router

6

d

fibra ottica e Fast Ethernet

I seguenti sono rispettivamente un indirizzo MAC e un indirizzo IP: b 10.18.0.3 e 5C-26-0A-29-BE-34

a

192.168.0.1 e 23

c

5C-26-0A-29-BE-34 e 192.168.1.1

7

Le parti principali di un pacchetto sono b intestazione, dati e coda dati e checksum d dati, intestazione e indirizzo header e coda

a c 8 a 9 a

d

5C-26-0A-29-BE-35 e 192.168.260.1

Una rete con bitrate a 100 Mbit/s teoricamente trasferisce un file da 100 MB in b 10 secondi c 8 secondi d 0,08 secondi

1 secondo

Le reti LAN prevedono un livello assente nello stack OSI. È il livello b LLC c HTTP d HDLC

MAC

10 I tipici protocolli di livello 2 Datalink per LAN e WAN sono, rispettivamente a MAC e HDLC b MAC e PPP c LLC e MAC d LLC e PPP 11 In una rete Fast Ethernet l’MTU di LLC vale 1503 byte. Allora un frame da 2 kB a è valido b non è valido c va frammentato d va codificato 12 L’applicazione arp restituisce un indirizzo a MAC b LLC c SNAP

Conoscenza necessaria: 10 risposte corrette. Risposte corrette: c a b c c c b c a d b a

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

d

IP

A1 Metcalfe’s Law Il co-inventore di Ethernet, Robert Metcalfe, fu assunto nei primi anni ’70 dalla Xerox PARC Inc. appena laureatosi al MIT, e dopo aver avuto notizia dei suoi lavori da laureando. Come disse in una intervista, sottopose i suoi calcoli sul progetto di Ethernet a Leonard Kleinrock (inventore delle reti switching, 1962) che li definì «spazzatura». In seguito fu proprio Kleinrock a coniare l’acronimo CSMA/CD. Una rete Ethernet funzionò la prima volta l’11 novembre del 1973. Ma nemmeno la Xerox PARC credette nel suo progetto, così decise di fondare una propria azienda per produrre e commercializzare Ethernet (3COM Inc., 1979). Nello stesso periodo al MIT un autorevole studioso, ma anche consulente IBM, Jerome H. Saltzer, indicò all’intero mondo accademico la sua preferenza per Token Ring come tecnologia per reti su brevi distanze. Le maggiori aziende produttrici di hardware, IBM in testa, decisero quindi di investire in Token Ring, lasciando spazio alla 3COM di Metcalfe di operare sul mercato delle reti LAN, proponendo progressivamente Ethernet come più economica ed efficiente (in James Pelkey, intervista a Bob Metcalfe, 16 febbraio 1988).

2

Tecnologia IEEE 802.3

La tecnologia di rete LAN IEEE 802.3, universalmente nota come rete Ethernet, è il tipo di rete locale più popolare e diffuso al mondo. Dopo la sua ideazione e ufficializzazione con il nome Ethernet tra il 1973 e il 1976 (Robert Metcalfe e David Boggs della Xerox PARC Inc.), lo IEEE e l’OSI ne descrissero lo standard nel documento IEEE 802.3 del 1983. La prima realizzazione di IEEE 802.3 usò il cavo coassiale e prese il nome di 10BASE5 con bitrate a 10Mbit/s. In seguito 802.3 si impone sia su rame che su fibra ottica. Nel 1995 l’IEEE diede vita a 802.3u o Fast Ethernet denominata 100BASE-TX, a 100 Mbit/s; quindi nel 1999 venne emanato lo standard 802.3ab denominato 1000BASE-T a 1000 Mbit/s (1 Gbit/s, Giga Ethernet). Infine nel 2006 fu pubblicato lo standard IEEE 802.an denominato 10GBASE-T o Tera Ethernet a 10 Gbit/s. L’idea originale di Metcalfe e Boggs prevedeva un formato del pacchetto leggermente diverso da quello ufficializzato da 802.3, ma dal 1997 con lo standard 802.3x, i due tipi di pacchetto possono circolare entrambi senza problemi su una qualsiasi LAN 802.3*. Nella famiglia di documenti IEEE 802 sono presenti vari standard di rete locale oltre a 802.3: 802.4 Token Bus, 802.5 Token Ring, 802.6 DQDB, 802.8 FDDI e altre, ma anche tecnologie varie connesse alle reti locali, come 802.11 Wi-Fi o 802.16 WiMAX. Alcune di queste tecnologie di rete locale sono oggi cadute in disuso e i relativi documenti resi inattivi o disbanded (esempio, Token Bus, Token Ring, DQDB, FDDI). Di notevole importanza, infine, il documento IEEE 802.2 LLC (Logical Link Control) che descrive lo strato di rete LAN a contatto con il livello 3 Network allo scopo di uniformare le LAN a prescindere dai vari livelli MAC e livello fisico adottati. Nella sua prima ideazione Ethernet (d’ora in avanti sinonimo di 802.3) utilizza un modo di accedere al mezzo fisico condiviso da tutte le stazioni denominato CSMA/CD (acronimo inglese di Carrier Sense Multiple Access with Collision Detection, ovvero accesso multiplo tramite rilevamento della portante con rilevamento delle collisioni), detto anche MAC di Ethernet. Le ragioni della sua grande diffusione sono dovute a: • primogenitura: è stata la prima tecnologia per reti LAN ad essere realizzata e ingegnerizzata; • economicità: la sua relativa semplicità consente di utilizzare componentistica hardware relativamente poco costosa;

A1

Tecnologia IEEE 802.3

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

• efficienza: malgrado alcuni elementi critici della sua architettura, si rivela efficiente per il tipo di traffico generato da un gruppo di utenti omogeneo; • scalabilità: con l’introduzione degli switch, si possono organizzare LAN anche con migliaia di postazioni; • è adeguata per veicolare i livelli WAN di Internet, cioè TCP/IP.

1

MAC di Ethernet

Con la sigla MAC (Medium Access Control) si intende la modalità con cui una rete locale gestisce il mezzo trasmissivo per coordinare trasmissioni e ricezioni. Ogni tipologia di rete locale ha un proprio MAC. Il MAC di Ethernet si chiama CSMA/CD (Carrier Sense Multiple Access with Collision Detection) ed è un protocollo di accesso multiplo al mezzo derivante da un precedente protocollo denominato ALOHA. Si tratta di un protocollo totalmente distribuito, senza stazioni privilegiate e intrinsecamente half duplex, operante in broadcast su topologie logiche a bus: ogni stazione quando riceve un pacchetto ne legge sempre l’indirizzo MAC di destinazione e solo se coincide con il proprio ne inoltra una copia al livello superiore. In trasmissione invece le cose sono un po’ più complicate. Poiché i trasmettitori delle stazioni si trovano ad operare in «parallelo» sullo stesso mezzo, è importante evitare che più stazioni trasmettano contemporaneamente, situazione nota con il termine di collisione. Tuttavia il protocollo non esclude che ciò possa comunque avvenire e prevede un meccanismo di riconoscimento di tale evento da parte delle stazioni coinvolte, in modo che possano ritentare la trasmissione in un tempo successivo. Un protocollo di questo tipo è detto a contesa. CSMA/CD opera in quattro fasi: 1) Carrier sense, ovvero rilevazione del segnale; ogni stazione che deve trasmettere, prima ascolta il bus e decide di trasmettere solo se questo è libero (idle). Questa fase è anche detta listening before talking. 2) Multiple access, ovvero possibilità di accesso multiplo; nonostante aver verificato il canale in stato di idle, è possibile che due o più stazioni, trovando anch’esse il canale libero, decidano di trasmettere. Questa situazione è più frequente di quanto non appaia a prima vista. Infatti se una stazione sta effettivamente trasmettendo, è molto probabile che altre stazioni inizino la fase di carrier sense, cioè si pongano in attesa di poter trasmettere. Quando la stazione che sta trasmettendo conclude la trasmissione, le stazioni in attesa vedranno tutte «contemporaneamente» il canale libero e tutte inizieranno a trasmettere (il tempo di propagazione dei bit sul mezzo NON è nullo). 3) Collision detection, ovvero determinazione di collisione; mentre una stazione trasmette, contemporaneamente ascolta i segnali sul mezzo trasmissivo, confrontandoli con quelli che emette lei stessa. In caso di ricezione discrepante, viene rilevata una collisione. Questa fase è anche detta listening while talking.

1

MAC di Ethernet

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

3

4) Backoff; se viene rilevata una collisione, la stazione intraprende le seguenti azioni: • sospende la trasmissione del pacchetto in corso; • trasmette una sequenza speciale detta di jamming, ovvero di interferenza trasmissiva. Ciò serve per enfatizzare l’avvenuta collisione in modo che anche le altre stazioni percepiscano l’evento. In effetti le altre stazioni riconoscendo la sequenza di jamming in coda al pacchetto (che in questo caso è profondamente corrotto dato che è la sovrapposizione casuale di più pacchetti), scartano tutta la ricezione in corso; • ripete il tentativo di trasmissione dopo un tempo pseudocasuale calcolato con uno speciale algoritmo e per un numero di volte non superiore a 16. Il ritardo pseudocasuale è necessario per evitare che le stesse stazioni che hanno generato la collisione la causino ancora al secondo tentativo e ai successivi. L’algoritmo di backoff prende il nome di Truncated Binary Exponential (TBE). 1

1

101010101...101

8

1 0

0

0000000011111111...101

1010101010101010...101 1111111100000000...1010101010 1

1...101

...01010101010101010101010101010101010...1

0 1 1

0

000000011111111...10101010101010...

0 1 1

0 1 1

0 1 1

7

5

0

00...1 0

000000...1 0

1...01010101010101010101010101010...

6

0000000011111111...

1...0101010101010...101

4

3

1...01010101010101010101010101010...

2

0000000011...1 0

0000000011111...1 0

0000000011111111...1 01

0

...01010101010101010101010101010101010...1

Risulta altresì evidente che le collisioni non sono altro che l’espediente che consente di accedere correttamente al mezzo; si può sostenere che una certa quantità di banda in CSMA/CD serve appunto per gestire le collisioni e poter così arbitrare il canale. Così formulato CSMA/CD è un protocollo di accesso con le seguenti caratteristiche: • Non è deterministico, cioè non è possibile stabilire sistematicamente se e quando una trasmissione andrà a buon fine. • Non è adatto per attività di tipo burst, cioè a raffiche consecutive e continue di trasmissioni, a causa dell’aumentare esponenziale delle collisioni. 4

A1

Tecnologia IEEE 802.3

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

1

111



*************

* **

7

110...000111

0 1...111

110...000111

5

0000 *

*  **



1...0101010101********* ******* *

0000000011111111...101

6

1

4

000...1 0

0000000...1 0



1...0101010101010...101

0 1...000111

110...000111 1

3

10...10101010101010...101 101...1

2

0000000011...1 0

0000000011111...1 0

0000000011111111...101

0

• Non è indicato per applicazioni in tempo reale (real time) dato che ha un tempo di ritrasmissione non predicibile. • Per la semplicità di realizzazione consente di mantenere bassi i costi sia del cablaggio che dell’hardware di supporto, garantendo comunque una discreta efficienza.

2

Il pacchetto MAC

L’evoluzione storica di Ethernet in IEEE 802.3 ha causato la presenza contemporanea di due formati di pacchetto MAC: il più anziano, denominato frame Ethernet 2 e il formato ufficiale frame 802.3: frame Ethernet 2 intestazione

preambolo SFD MAC 7 1 destinatario 6

dati

MAC Ethertype 2 mittente 6

coda

Information 46÷1500

FCS 4

Entrambi i pacchetti rispettano uno dei parametri progettuali di Ethernet, ovvero che il pacchetto più corto circolante in rete non sia inferiore a 64 ottetti (byte), esclusi preambolo e SFD. In totale un frame Ethernet non può essere inferiore a 72 byte (576 bit). frame 802.3

intestazione

preambolo SFD MAC 7 1 destinatario 6

dati

MAC lunghezza 2 mittente 6

coda

Information 0÷1500

2

Pad FCS @ GZ%XI/HQ VL]HRI $GDSWHU,QIR   GLPHQVLRQH GHO EXIIHU  V\VWHP FDOO DOOD $3, :LQ DSSURSULDWD GZ6WDWXV *HW$GDSWHUV,QIR $GDSWHU,QIR  >RXW@ FRQWHUUj L 0$& DGGUHVV GZ%XI/HQ   >LQ@ GLPHQVLRQH GHO EXIIHU LI GZ6WDWXV 12B(5525 UHWXUQ  M  S$GDSWHU,QIR

$GDSWHU,QIR

 SXQWDWRUH DO EXIIHU 씰

A1

Tecnologia IEEE 802.3

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

PROGRAMMA



               `

ZKLOH S$GDSWHU,QIR  VH F¶q XQ HOHPHQWR ^ M VSULQWI V]0DF1,& G LQGLUL]]R 0$& M  IRU L  L L ^ VSULQWI V]0DFVWUOHQ V]0DF  [S$GDSWHU,QIR!$GGUHVV>L@  `

`

SULQWI ?QVV]0DF  S$GDSWHU,QIR S$GDSWHU,QIR!1H[W  LO SURVVLPR

UHWXUQ 

In evidenza nelle righe 15÷17 la chiamata di sistema. Il sistema operativo restituisce un vettore di strutture IP_ADAPTER_INFO (un elemento per ogni scheda NIC). Un campo della struttura (Address) contiene il vettore di 6 byte contenente l’indirizzo MAC. Il primo campo della struttura (Next) contiene l’indirizzo del prossimo elemento nel vettore, così si può scorrerlo come una lista concatenata (righe 23 e 33).

L’unica differenza tra i due formati di pacchetto MAC riguarda il campo Ethertype/lunghezza (anche detto Type/lenght). Se questo campo contiene un valore superiore a 1500 (5dch), non si tratta di un pacchetto 802.3 e quindi deve essere un pacchetto Ethernet 2. In questo caso il valore significa il tipo di protocollo di livello superiore trasportato nel campo dati. Le codifiche per Ethertype iniziano da 0600h (1536), tra cui si ricordano: Ethertype

Descrizione

Livello superiore trasportato

K

IP, Internet Protocol Version 4 (IPv4)

3 Network (TCP/IP)

K

Address Resolution Protocol (ARP)

3 Network (TCP/IP)

K

Reverse Address Resolution Protocol (RARP)

3 Network (TCP/IP)

%K

AppleTalk (Ethertalk)

K

VLAN-tagged frame (IEEE 802.1Q)

2, tra MAC e LLC

&K

Simple Network Management Protocol (SNMP)

3 Network (TCP/IP)

''K

IP, Internet Protocol Version 6 (IPv6)

3 Network (TCP/IP)

K

MAC Control

2, tra MAC e LLC

K

LACP

2, tra MAC e LLC

K

Multi Protocol Label Switch (MPLS)

3 Network

K

PPPoE

2, in tunnel

K

Jumbo Frames

2 MAC

Quando invece il campo Type/lenght è inferiore o uguale a 1500, significa che si tratta della lunghezza del campo dati e allora la trama è 802.3. In questo caso nel campo dati è spesso presente una LLC PDU denominata SNAP Ethernet (SubNetwork Access Protocol), con SAP=aah, che ha il seguente formato: frame SNAP

AAh

AAh

intestazione 03h

DSAP SSAP Control 1 1 1

00h

00h OUI 3

dati 00h Protocol l type 2

Information @ LQW LG[ LQW Y IS IRSHQ IUDPHHWKW[W U  LI IJHWV V](WK)UDPH  IS 18// UHWXUQ  IFORVH IS  SULQWI IUDPH (WKHUQHWV  V](WK)UDPH  LG[  LG[ V]7\SH/HQ>@ LG[  LG[ V]7\SH/HQ>@

LG[  V](WK)UDPH>LG[@ V]7\SH/HQ>@ LG[  V](WK)UDPH>LG[@ V]7\SH/HQ>@

V](WK)UDPH>LG[@ V](WK)UDPH>LG[@ V]7\SH/HQ>@ 

Y KWRL V]7\SH/HQ   FRQYHUVLRQH LQ LQWHUR SULQWI ?Q7\SHOHQJKW VK G V]7\SH/HQ Y  LI Y! ^ SULQWI ?QIUDPH (WKHUQHW  (WKHUW\SH VK V]7\SH/HQ  ` HOVH ^ LG[  LG[ LG[  V]7\SH/HQ>@ V](WK)UDPH>LG[@ V]7\SH/HQ>@ V](WK)UDPH>LG[@ V]7\SH/HQ>@  LI VWUFPS V]7\SH/HQ DD ^ SULQWI ?QIUDPH (WKHUQHW  61$3 OXQJKH]]D G Y  ` HOVH ^ SULQWI ?QIUDPH (WKHUQHW  //& OXQJKH]]D G Y  ` ` `

UHWXUQ 

LQW KWRL FKDU VWUQXP ^ LQW YDOXH  FKDU S

`

S VWUQXP ZKLOH S ^ LI S !  S   YDOXH YDOXH   S    HOVH YDOXH YDOXH   S  D   S ` UHWXUQ YDOXH

2

Il pacchetto MAC

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica



9

PROGRAMMA



Il file di testo frameeth.txt si trova nella cartella corrente e viene aperto, letto e chiuso con le righe 11÷13. Il suo contenuto viene copiato nell’array di caratteri szEthFrame[ ]. Il campo Type/lenght, in posizione 13 e 14, viene copiato in una stringa (righe 16÷19). Per raggiungerlo bisogna moltiplicare per 3 l’indice 13 e 14 (in una sequenza i byte sono spaziati e occupano tre caratteri). Una volta trasformato in stringa esadecimale (su quattro caratteri), il campo Type/lenght va trasformato in numero decimale per poterlo confrontare con l’MTU di Ethernet (1500) per discriminare il tipo di pacchetto. A tal scopo è stata scritta una funzione htoi() che, presa in ingresso una stringa esadecimale, restituisce il numero decimale equivalente. Il corpo della funzione si trova alle righe 46÷57 e il prototipo a riga 04. Infine, per sapere se il pacchetto è un 802.3 SNAP o 802.3 LLC si legge il byte a indice 15 e lo si confronta con la stringa esadecimale “aa” (righe 30÷32).

3

Dominio di broadcast

PROGRAMMA

Gli indirizzi fisici delle LAN a 6 byte (MAC address) sono univoci su scala mondiale e memorizzati permanentemente nella ROM della scheda di rete dal produttore secondo lo schema OUI/n. di serie: i primi tre byte sono l’indentificativo univoco su base mondiale assegnato dall’IEEE ad ogni produttore, mentre il n. di serie è deciso autonomamente dal costruttore per individuare la singola scheda commercializzata. Ricavare l’indirizzo MAC (Java) Scrivere un programma in linguaggio Java che legge gli indirizzi MAC delle interfacce di rete installate sulla macchina. /$@ DUJV ^ WU\ ^ LQW M  (QXPHUDWLRQ1HWZRUN,QWHUIDFH! QHWV 1HWZRUN,QWHUIDFHJHW1HWZRUN,QWHUIDFHV  IRU 1HWZRUN,QWHUIDFH $GDSWHU,QIR  &ROOHFWLRQVOLVW QHWV ^ E\WH>@ PDF $GDSWHU,QIRJHW+DUGZDUH$GGUHVV  LI PDF  QXOO PDFOHQJWK  ^ 6WULQJ%XLOGHU VE0DF QHZ 6WULQJ%XLOGHU  M VE0DFDSSHQG 6WULQJIRUPDW 1,& G LQGLUL]]R 0$&  M  IRU LQW L  L   L ^ VE0DFDSSHQG 6WULQJIRUPDW [  PDF>L@  ` 6\VWHPRXWSULQWOQ VE0DFWR6WULQJ 

A1

Tecnologia IEEE 802.3

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica



PROGRAMMA



 `  `  ` FDWFK 6RFNHW([FHSWLRQ H  ^  6\VWHPRXWSULQWOQ HJHW0HVVDJH   `  `  `

In evidenza alla riga 12 la chiamata di sistema, sottoforma di metodo statico, NetworkInterface.getNetworkInterfaces(). Il metodo restituisce un vettore (un elemento per ogni scheda NIC) in cui ogni elemento è un oggetto di tipo NetworkInterface dal quale invocare il metodo .getHardwareAddress() (riga 16) che restituisce il vettore contenente i 6 byte dell’indirizzo MAC dell’interfaccia di rete. Per scandire ogni elemento dell’enumerazione si usa l’interfaccia Collection (riga 13).

I due bit LSB del primo byte dell’OUI hanno un significato speciale e determinano il tipo di pacchetto MAC. Sono sottratti quindi alla codifica OUI, motivo per cui il primo byte di un OUI del produttore dovrebbe essere sempre pari e dovrebbe essere sempre pari il settimo byte di un pacchetto Ethernet: tipi di indirizzi MAC 47464544 43424140 39383736 35343332 31302928 27262524 2322 21201918 17161514 13121110 9 8 7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0

OUI 0 U/L I/G 1

OUI 1 1

OUI 2 1

serial number 0 serial number 1 serial number 2 1 1 1

Gli indirizzi MAC circolanti su Ethernet possono essere quindi di tre tipi: • single (o unicast, I/G=), se riferito ad un singolo sistema; • multicast (I/G=), se riferito ad un gruppo di sistemi; solo se la trama è multicast il bit U/L ha significato: 0, gruppo universale; 1, gruppo locale. • broadcast (ff:ff:ff:ff:ff:ff, tutti i byte a ffh), se riferito a tutti i sistemi della LAN. Quando una scheda LAN riceve un pacchetto effettua una serie di controlli. Prima verifica che il pacchetto sia integro (cioè abbia una FCS corretta) e di dimensioni ammesse. Poi analizza l’indirizzo MAC destinatario e: • se è broadcast, il pacchetto viene sempre passato al livello superiore; • se è single, il pacchetto viene passato al livello superiore solo se è uguale all’indirizzo MAC della scheda; • se è multicast, verifica se il proprio MAC appartiene al gruppo indirizzato, nel qual caso lo passa al livello superiore. Pacchetti con indirizzi broadcast e multicast non trasportano mai dati utente ma solo dati di servizio (esempio, servono per far funzionare il programma arp).

3

Dominio di broadcast

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

Ethernet big e little endian L’ordine standard di trasmissione dei bit sul mezzo di Ethernet è bizzarro, benché sia stato poi adottato da tutte le altre tecnologie su LAN. Rispetto ai byte del pacchetto adotta big endian: i byte vengono spediti da sinistra verso destra. Ma la spedizione dei singoli bit di un byte avviene in modo little endian, da destra verso sinistra, ovvero il primo bit che ‘parte’ è il bit di peso 0. È per questo motivo che i due bit I/G e U/L hanno peso 0 e 1, così da essere i primi ad essere spediti e quindi ricevuti. Questa modalità è detta canonical order.

11

ESEMPIO

Tipi di indirizzi MAC

natario (primo byte dell’OUI = aah = 10101010b), il primo bit, di peso zero (I/G), vale , il pacchetto è single (unicast).

Date le seguenti trame Ethernet in esadecimale, decodificarne il tipo: 1) DD    H G   E  F       H D II   H     F   2)   H I II ID   G   G        GG      I F D   3) II II II II II II     IG                    1) Siccome nel primo ottetto dell’indirizzo MAC desti-

2) Siccome nel primo ottetto dell’indirizzo MAC destinatario (primo byte dell’OUI = 01h = 00000001b), il primo bit, di peso zero (I/G), vale , il pacchetto è multicast. Siccome il bit di peso 1 (U/L) vale , si tratta di un indirizzo multicast assegnato su scala mondiale. In effetti l’OUI  è un l’indirizzo Ethernet multicast assegnato dallo IANA a IPv4, cioè la trama conterrà un pacchetto IP. 3) Siccome l’indirizzo MAC del destinatario vale IIIIIIIIIIII, il pacchetto è broadcast.

PROGRAMMA

Ora è possibile fornire una definizione di dominio di broadcast come quella sezione di rete LAN in cui si trovano tutti quegli host che, in presenza di un pacchetto di broadcast, lo ricevono. Tipi di indirizzi MAC Scrivere un programma in linguaggio C che legge da un file di testo tre indirizzi MAC e ne determini il tipo: single, multicast o broadcast. /$L@ SF ` IFORVH IS 

A1

Tecnologia IEEE 802.3

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica



PROGRAMMA



                                          `

IRU L  L  1800$& L ^  LO SULPR E\WH GHOO¶LQGLUL]]R 0$& V]%\WH>@ DV]>L@>@ V]%\WH>@ DV]>L@>@ V]%\WH>@  E\W0DF XQVLJQHG FKDU KWRL V]%\WH  LI ,*0$6. E\W0DF ^ LQW I 

,*0$6.

IRU M MM ^ LI DV]>L@>M @ DV]>L@>M @ ^ I  EUHDN ` ` LI I DV]>L@>@ I ^ VWUFS\ V]0VJEURDGFDVW  ` HOVH ^ VWUFS\ V]0VJPXOWLFDVW  LI 8/0$6. E\W0DF 8/0$6. VWUFDW V]0VJ ORFDO  HOVH VWUFDW V]0VJXQLYHUVDO  `

` HOVH ^ VWUFS\ V]0VJVLQJOH  `

SULQWI ?Q,QGLUL]]R 0$& G V VL DV]>L@ V]0VJ  ` UHWXUQ 

Il file di testo macaddr.txt deve avere tre righe non più lunghe di 18 caratteri (un indirizzo MAC in Ascii), si trova nella cartella corrente e viene aperto, letto e chiuso con le righe 18÷27. Il suo contenuto viene copiato nel vettore di stringhe asz [ ]. Siccome fgets() copia anche un ritorno a capo alla fine della stringa, viene eliminato (riga 24). Quindi per ogni indirizzo MAC (asz[i]), si isola il primo byte Ascii e lo si trasforma in decimale (righe 32 e 33). Ora si possono verificare i due bit di peso 0 e 1, con le relative maschere (riga 35 e 55). Per determinare se l’indirizzo è broadcast, si controlla che tutte le 6 coppie Ascii siano uguali (righe 39÷46), nel qual caso si controlla che un carattere esadecimale coincida con il codice Ascii ‘f’’ (righe 48÷50). NB. La funzione htoi() è stata inclusa a riga 03. Il suo codice è presente nel PROGRAMMA. Frame Ethernet.

4

Dominio di collisione

La prima realizzazione commerciale di Ethernet, 10BASE5 su cavo coassiale, ha stabilito alcuni valori base per il CSMA/CD che hanno poi influenzato i sistemi successivi fino ai più recenti. È quindi interessante analizzare le ragioni per cui le scelte di allora hanno generato conseguenze tutt’oggi vincolanti anche per le tecnologie più recenti, per esempio la lunghezza massima dei cavi in rame per le reti 802.3.

4

Dominio di collisione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

13

Jumbo frame L’MTU di Ethernet (1500 byte) a volte può rallentare le operazioni di inoltro in rete, per esempio se il protocollo di livello superiore trasportato dalla trama ha un MTU maggiore (esempio, IP). In questi casi il pacchetto di livello superiore di dimensione > 1500 byte deve essere frammentato in spedizione e ricompattato in ricezione, operazioni che sprecano tempo utile (overhead). Se tutti i dispositivi Ethernet coinvolti sono abilitati a gestire un MTU maggiore di 1500 byte, allora possono essere veicolati in rete pacchetti Ethernet di dimensioni che possono anche arrivare a 9000 byte, i cosiddetti Jumbo frame. I Jumbo frame sono supportati da alcune realizzazioni di Fast Ethernet e da Giga Ethernet in su come standard.

Dato il bitrate originale a 10 Mbit/s, si poneva la questione di quanto dovesse essere lunga una tratta coassiale affinché le collisioni potessero essere ben discriminate. Bisogna considerare che affinché una collisione sia ben determinabile è necessario che il primo bit trasmesso di un pacchetto rientri nella scheda prima che l’ultimo bit sia stato spedito. Solo in questo caso una scheda ha la certezza che un pacchetto sia stato trasmesso correttamente o meno: se i bit che rientrano coicidono ordinatamente con i bit in uscita, il pacchetto è stato spedito correttamente, altrimenti è avvenuta una collisione. In altri termini, una scheda che trasmette deve avere il completo controllo «elettrico» del mezzo durante tutta la fase di trasmissione. Considerando che i bit devono percorrere due volte la lunghezza del bus coassiale (andata e ritorno) e che la collisione più sfortunata può avvenire su un estremo (caso in cui la scheda che trasmette e la scheda che causa la collisione sono collocate agli antipodi del bus coassiale), rimane da stabilire che distanza può percorrere il primo bit trasmesso prima che sia trasmesso l’ultimo bit. In altre parole è necessario sapere quanto tempo impiega la spedizione di un pacchetto. Bisogna quindi decidere la dimensione del pacchetto più piccolo trasmissibile, dato che questo è il caso che concede meno tempo al primo bit per circolare sul bus. Fu stabilito che il pacchetto più piccolo possibile fosse lungo 64 ottetti (byte), che sommati agli 8 ottetti di preambolo e SFD, in totale portano a 72 ottetti la dimensione del pacchetto minimo per Ethernet. Sapendo che il tempo di trasmissione di un bit (bit time) a 10 Mbit/s vale 1/(10 · 106) secondi, è possibile calcolare il tempo di andata e ritorno del pacchetto minimo (RTD, Round Trip Delay) per una Ethernet 10BASE5: RTD10BASE5 = n.ottetti ⫻ 8 ⫻ bit time = 72 ⫻ 8 ⫻ 1/(10 · 106) s = = 576 ⫻ 0,0000001 s = 0,0000576 s Sapendo che la velocità della luce c su un mezzo in rame viene attenuata di un fattore k = 0,66, si calcola lo spazio percorso nell’RTD: Spazio(RTD10BASE5) = velocità ⫻ tempo = c · k · RTD10BASE5 = = 300000 km/s · 0,66 ⫻ 0,0000576 s = 11,4 km Il bit di un pacchetto di 72 ottetti su bus coassiale con bitrate a 10 Mbit/s percorre circa 11 km prima di rientrare nella scheda che l’ha trasmesso. Ne deriva che la lunghezza massima del cavo non può superare la metà di questa distanza (va divisa per andata e ritorno), cioè 11,4 km / 2 = 5,7 km. CSMA/CD 10BASE-5

0

000000011111111...10101010101010... 1...01010101010101010101010101010101010...

0 1 1

1

tx: pacchetto minimo 576 bit (72 ottetti)

0

lunghezza teorica: 5700 m lunghezza reale: 500 m

Infine, siccome l’attenuazione del segnale su cavo coassiale vale un fattore 10, la massima tratta di bus ammissibile per rilevare correttamente le collisioni si riduce a circa 500 m. 14

A1

Tecnologia IEEE 802.3

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

Per 10BASE-T su doppio doppino con topologia a stella e con centrostella un ripetitore di segnale (hub), la massima distanza del mezzo si ha tra due stazioni ai vertici della stella. L’effetto combinato dell’hub (che connette le stazioni e rigenera il segnale) e la fisica del doppino ritorto consente teoricamente un diametro della stella pari a circa 2000 m, ottenibile con cavi di alta qualità. Al tempo la categoria di cavo UTP utilizzato era di categoria 3 o 4, insufficiente per queste distanze, e quindi il raggio massimo consentito per 10BASE-T si ridusse a 100 m. CSMA/CD 10BASE-T

0

0 1 1

000000011111111...1010101010 10101010101010101010101010101010 lunghezza teorica: 2000 m lunghezza reale: 200 m lunghezza patch: 100 m

In ogni caso la scelta di un pacchetto minimo di 72 byte (64+8 di preambolo e SFD) consente a 10BASE5/10BASE-T di ottenere un dimensionamento fisico soddisfacente per una LAN. Tale parametro rimarrà inalterato per molti anni. Per 100BASE-T (Fast Ethernet), infatti, aumentando il bitrate di un fattore 10 e riducendo l’RTD a un decimo dell’originale, bisognava ridurre ad un decimo il diametro della stella, da 2000 m a 200 m. Con cavi di categoria 5 però si ottengono raggi per la stella di 100 m, pertanto la compatibilità con 10BASE-T rimase valida. Per 1000BASE-TX (Giga Ethernet), l’RTD si riduce di un altro fattore 10 rispetto a 100BASE-T, pertanto per mantenere invariata la compatibilità per il limite di lunghezza del cavo a 100 m, bisognò aumentare di circa 10 volte la dimensione minima del pacchetto (e quindi dell’RTD), che in Giga Ethernet non vale più 64 byte, ma 512 byte. Ora è possibile fornire la definizione di dominio di collisione come quella sezione di rete LAN in cui, se presente una collisione, tutti gli host su quella sezione di rete la rilevano.

4

Dominio di collisione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

15

UESITI ESERCIZI PER LA VERIFICA ORALE Saper rispondere ai requisiti fondamentali dà una sufficiente garanzia per sentirsi pronti all’interrogazione. Saper anche rispondere ai requisiti avanzati dimostra una padronanza eccellente degli argomenti del capitolo. Requisiti fondamentali

2

Spiegare perché dopo una collisione una scheda Ethernet non riprova immediatamente a trasmettere.

1

Illustrare le nozioni di “half duplex”, “broadcast” e “contesa” in riferimento al MAC di Ethernet.

2

Mostrare con un esempio quando si genera una collisione su una rete LAN Ethernet.

3

Spiegare per quale ragione una trama 802.3 in taluni casi deve essere «riempita» (pad).

3

Spiegare come si distinguono le trame 802.3 dalle trame Ethernet 2.

4

Illustrare il pacchetto SNAP.

5

Elencare i tre formati di pacchetto circolanti su Ethernet e motivarne la presenza.

4

Commentare il significato del campo Ethertype.

5

Spiegare come lo schema degli indirizzi MAC garantisce che siano univoci su scala mondiale.

6

Spiegare come si capisce se un indirizzo MAC è multicast o unicast.

6

Elencare e commentare i tipi di indirizzi MAC.

7

7

Commentare l’acronimo RTD.

8

Commentare il fattore di attenuazione della velocità della luce su un mezzo in rame per quanto riguarda il calcolo dello spazio percorso da un bit.

Definire la locuzione «dominio di collisione».

9

Tradurre letteralmente la sigla CSMA/CD e indicare il significato di ogni suo termine.

8

Mostrare perché Giga Ethernet funziona regolarmente su tratti di cavo di lunghezza uguale a quelli utilizzati da Fast Ethernet.

9

Giustificare il fatto per cui il settimo byte di un frame Ethernet dovrebbe essere sempre pari.

10 Spiegare per quale motivo un indirizzo broadcast non può mai essere l’indirizzo di un mittente.

11 Definire la locuzione «dominio di broadcast». 10 Riportare

la dimensione minima e massima di una trama Ethernet.

12 Disegnare

su un foglio lo schema di una rete LAN Ethernet con 5 stazioni. Quindi mettere in evidenza il dominio di broadcast e il dominio di collisione.

11 Spiegare cosa potrebbe succedere se una scheda NIC Ethernet terminasse di spedire prima di ricevere il primo bit trasmesso.

13 Elencare

le principali tecnologie Ethernet indicandone il bitrate.

12 Riportare

almeno un caso in cui è necessario servirsi di pacchetti di broadcast.

Requisiti avanzati

1

16

Provare a calcolare quanti costruttori di NIC card Ethernet possono essere presenti a livello mondiale.

A1

13 Dati due indirizzi MAC su due vettori da sei elementi, scrivere un frammento di codice C per verificare se i due indirizzi sono uguali.

Tecnologia IEEE 802.3

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

ESITI ESERCIZI PER LA VERIFICA SCRITTA I prerequisiti richiesti per affrontare questi esercizi sono la conoscenza degli operatori bitwise AND, OR, ecc. e le operazioni di maschera dei bit.

DD DD    F    E GI I                

Indirizzi MAC e trame Ethernet

1

Data la seguente sequenza di byte (esadecimali) che rappresentano un frame Ethernet, decodificarne il contenuto.

6

II II II II II II   FH H E              FH H E  F D         F D  

2

Data la seguente sequenza di byte (esadecimali) che rappresentano un frame Ethernet, decodificarne il contenuto.     

3

  D  

 D   

HI H F  

   

   

FH   

H   

E G GI 

  E 

 F E 

  E  E

G    

  H  

  D  

F    

   II

   II

II   H

D   G

 G  

G H H 

 F D 

D   F D

FF  F D 

E  D F 

EI D   D

ID DF   

    

   H F

F   IG 

I  H H D

D H   

  E F I    

  F FF FF FF   F  I G   DD DD    F       F  I         G    

7

 D IH 

 D IH 

Data la seguente sequenza di byte (esadecimali) che rappresentano un frame Ethernet, decodificarne il contenuto.   F FF FF FF  H H G G   H

Data la seguente sequenza di byte (esadecimali) che rappresentano un frame Ethernet, decodificarne il contenuto.   F FF FF FF   F  I G        F    E FD G          F      

8

Data la seguente sequenza di byte (esadecimali) che rappresentano un frame Ethernet, decodificarne il contenuto.   E  

 D F 

Data la seguente sequenza di byte (esadecimali) che rappresentano un frame Ethernet, decodificarne il contenuto.     

5

I  F  

Data la seguente sequenza di byte (esadecimali) che rappresentano un frame Ethernet, decodificarne il contenuto.     

4

    E

Data la seguente sequenza di byte (esadecimali) che rappresentano un frame Ethernet, decodificarne il contenuto.

9

   F 

F    

    

   

   

   

 H  

   I

HD   

E   

F  HD 

  E 

 HD  

Data la seguente sequenza di byte (esadecimali) che rappresentano un frame Ethernet, decodificarne il contenuto.   F FF FF FF F   IH     DD DD    F    E HD G          IE      

10 Data la seguente sequenza di byte (esadecimali) che rappresentano un frame Ethernet, decodificarne il contenuto.   F F F F  H H G G   H H H      D   G II     I I  H        

Esercizi Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

17

11 Dato il frame dell’Esercizio 1, classificare i tipi di

14 Dato il frame dell’Esercizio 8, classificare i tipi di

indirizzi MAC del pacchetto.

indirizzi MAC del pacchetto.

12 Dato il frame dell’Esercizio 2, classificare i tipi di

15 Dato il frame dell’Esercizio 9, classificare i tipi di

indirizzi MAC del pacchetto.

indirizzi MAC del pacchetto.

13 Dato il frame dell’Esercizio 3, classificare i tipi di

16 Dato il frame dell’Esercizio 10, classificare i tipi di

indirizzi MAC del pacchetto.

18

A1

indirizzi MAC del pacchetto.

Tecnologia IEEE 802.3

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

ESITI ESERCIZI PER LA VERIFICA DI LABORATORIO Per compilare gli esercizi proposti è stato usato l’ambiente gratuito multipiattaforma Windows/Linux Code::Blocks 10.5 con gcc 4.4.1 e Eclipse SDK 4.2.0 con Jdk 7 per Java 1.7. I testi degli esercizi presentano uno o più layout di input/output richiesti; in questo modo sono indicate, a volte, alcune specifiche del programma come l’output, il controllo dell’input o i valori ammissibili. Indirizzi MAC

Trame Ethernet

1

5

Scrivere un programma che acquisisce in input un indirizzo MAC in esadecimale, effettuando il controllo dell’input.

Scrivere un programma che letto un frame Ethernet da disco, stampi l’indirizzo MAC destinazione e l’indirizzo MAC mittente. /D\RXW

/D\RXW

287387

287387 0$& 0$& 0$& 0$& 0$& 0$& 0$& 0$&

DGGUHVV DGGUHVV DGGUHVV DGGUHVV DGGUHVV DGGUHVV DGGUHVV DGGUHVV

0$& DGGUHVV

E\WH   E\WH   E\WH   E\WH   E\WH   E\WH   E\WH   E\WH  

)UDPH (WKHUQHW VX ¿OH IUDPHHWKW[W 0$& DGGUHVV GHVWLQDWDULR  G E  I  0$& DGGUHVV PLWWHQWH   IF  E F

D DJ DI     

6

Scrivere un programma che letto un frame da disco, stampi l’indirizzo MAC destinazione e l’indirizzo MAC mittente e ne determini il tipo. /D\RXW

DDI

287387

2

Scrivere un programma che genera casualmente un indirizzo MAC corretto, quindi stabilirne il tipo. /D\RXW

287387  0$& DGGUHVV FDVXDOH FFFFFFF 7LSR 0XOWLFDVW ORFDOH

287387  0$& DGGUHVV FDVXDOH FFF 7LSR 8QLFDVW VLQJOH

3

Scrivere un programma che genera casualmente un indirizzo MAC, ma del tipo selezionato in input. /D\RXW

287387 7LSR LQGLUL]]R 0$& E P X  P 0$& DGGUHVV 0XOWLFDVW IFDDEE

)UDPH (WKHUQHW VX ¿OH IUDPHHWKEW[W 0$& DGGUHVV GHVWLQDWDULR II II II II II II 7LSR %URDGFDVW 0$& DGGUHVV PLWWHQWH   FH H E  7LSR 8QLFDVW

7

Scrivere un programma che crea su disco un frame Ethernet di broadcast come quello dell’Esercizio 1, ma destinato a una interfaccia del proprio PC.

8

Scrivere un programma che letto un frame da disco, verifichi che la lunghezza del frame sia corretta (se possibile). Nota: nelle sequenze di byte di un frame non viene mai riportato l’FCS, cioè mancano i 4 byte finali. /D\RXW

4

Scrivere un programma che, rilevati gli indirizzi MAC del PC, indichi se qualcuno appartiene allo stesso produttore.

287387  )UDPH (WKHUQHW QHO ¿OH IUDPHHWKW[W )RUPDWR (WKHUQHW  YHUL¿FD QRQ SRVVLELOH

287387 

/D\RXW

287387 0$& 1,& 1,& 1,& 1,&

DGGUHVV ULOHYDWL  LQGLUL]]R 0$& F FE  D IG D  LQGLUL]]R 0$&  D F  G DF  LQGLUL]]R 0$& F FE  D IG   H 1,&  VWHVVR SURGXWWRUH

)UDPH (WKHUQHW QHO ¿OH HVBVFULWWRBW[W )RUPDWR  /XQJKH]]D FDPSR /HQJWK  K 3DGGLQJ   /XQJKH]]D GHO IUDPH OHWWR  9HUL¿FD   2N

Esercizi Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

19

A2

Dispositivi e instradamento

Per ampliare il numero di nodi e host su una rete LAN, la tecnologia IEEE 802.3* mette a disposizione una serie di apparati di interconnessione atti a risolvere varie problematiche come: • l’attenuazione di segnale per stazioni distanti (ripetitori o repeater); • l’attestazione dei nodi su un centro stella all’apparire della tecnologia *BASE-T (concentratori o hub); • la separazione dei domini di collisione e la tolleranza ai guasti (bridge e switch); • la separazione dei domini di broadcast (managed switch/VLAN) • la gestione di sistemi virtuali (switch virtuali). Alcuni di questi dispositivi sono ormai obsoleti (o legacy), come repeater, hub e bridge; ciononostante la letteratura di settore li tratta ancora per comprendere meglio le dinamiche di circolazione dei pacchetti. Molti di questi dispositivi, inoltre, sono detti trasparenti, ovvero non necessitano di configurazione né manutenzione da parte di un operatore tecnico. Nel gergo delle reti l’attività di configurazione di un dispositivo da parte di un operatore viene detta management. I dispositivi elencati, soprattutto quelli più evoluti, operano a vari livelli del modello OSI, anche fino al livello 7 Applicazione; per coerenza espositiva si analizzeranno solo i dispositivi operanti fino al livello 2 Datalink, anche se qualche accenno ad apparati di livello 3 Network sarà necessario per meglio comprendere i concetti.

1

Ripetitore

Il ripetitore (repeater) serve per connettere tratte di rete molto distanti in cui il segnale elettrico può deperire, prolungando la distanza massima raggiungibile. Il ripetitore è un apparato obsoleto. La funzione di un ripetitore è solo attiva a livello 1 Fisico; tipicamente realizzati con due porte, i ripetitori si limitano ad agire amplificando il segnale digitale in ingresso, risincronizzandolo e rigenerando i preamboli in uscita. Ricreare il preambolo significa avere una memoria di transito e creare un breve gap di tempo nella trasmissione; quindi per non superare il tempo limite di trasmissione previsto dal modello teorico è comunque necessario dare un limite massimo al numero di ripetitori utilizzabili in cascata. 20

A2

Dispositivi e instradamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

dominio di collisione dominio di broadcast

repeater

Il ripetitore estende il dominio di collisione e il dominio di broadcast.

2

Concentratore

Quando la tecnologia 802.3 10BASE-T prese piede, si utilizzarono questi concentratori (hub) come centro stella della topologia fisica (la topologia logica rimane sempre il bus). L’hub quindi ha un certo numero di porte di input/output su cui connettere le stazioni della rete (esempio, 4, 8 o 32 porte). dominio di collisione dominio di broadcast hub

hub

L’hub è un apparato obsoleto. Anche l’hub lavora solo a livello 1 Fisico, e rigenera il segnale elettrico in ingresso verso la stazione destinataria, avendo quindi anche la funzione di ripetitore. Per questioni economiche e di scalabilità gli hub prevedono, oltre alle porte di I/O per i nodi collegati, un paio di porte denominate uplink per collegare in cascata più hub tra loro e quindi aumentare il numero di nodi totali nel centro stella, ottenendo un minimo grado di tolleranza ai guasti (fault tolerance). Con la tecnologia 10BASE-T viene anche introdotto un rudimentale meccanismo di autonegoziazione attivata quando il NIC è in idle (inattività): periodicamente la scheda di rete emette un segnale impulsivo (di durata 100 ns) a intervalli di 16 ms detto LIT (Link Integrity Test): se l’hub

2

Concentratore

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

21

non rileva questo segnale per più di 150 ms blocca la porta ritenendo la scheda ad essa connessa spenta (o guasta). L’hub estende il dominio di collisione e il dominio di broadcast esattamente come il repeater: quando l’apparato riceve un pacchetto su una porta, lo ritrasmette su tutte le altre. La circolazione dei pacchetti in un hub avviene secondo il diagramma sottostante, in cui si ipotizza un trasferimento dalla stazione A alla stazione D. 0

1 101101

101

D

A

B

D

A

B

C

C

2

3

101101

101101

D

A

B

A

C

D

B

C

4

5

101101

B

101

D

A

101101

101101

A

C

B

C

Le collisioni su un hub avvengono ogniqualvolta due pacchetti si trovano contemporaneamente al suo interno. 0

1 101101

101

D

D

A 111

A

B

B

C 2

101101



B

C



  B

A

4

D

D

000111

D

000111

B

A

3



101101

A

C

C





5

D

A

  C

B

C

Se la collisione avviene sul cavo di una stazione, si propagherà all’hub che la reinvierà su tutte le porte meno quella di provenienza. 22

A2

Dispositivi e instradamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

3

Switch

Lo switch half duplex sostituisce l’hub come concentratore di centro stella e aggiunge una preziosa capacità che opera nel sottolivello MAC dello strato 2 Datalink. All’interno dello switch è presente una memoria dinamica volatile denominata CAM (Content Addressable Memory) che mantiene aggiornata una semplice tabella in cui vengono registrati tutti gli indirizzi MAC mittente dei pacchetti che attraversano le sue porte. Ogni riga della tabella (detta filtering database) è una terna che prevede l’indirizzo MAC mittente, la porta da cui il pacchetto è transitato e un valore numerico che indica da quanto tempo il valore è presente nella tabella (ageing time). dominio di broadcast

switch

switch

ESEMPIO

domini di collisione

Filtering database Dato il seguente schema di switched LAN, mostrare il contenuto della CAM dello Switch-1 di marca Cisco se: 1. L’host A manda un pacchetto all’host B. 2. L’host E manda un pacchetto all’host C. 3. L’host B manda un pacchetto all’host D. 4. L’host D manda un pacchetto all’host C. 5. L’host B manda un pacchetto all’host F (che è spento). 00 00 0c 10 15 13

00 00 0c 10 15 12

F

A

Switch-2

Switch-1 1

4 4

2

B

00 00 0c 10 15 11

1

3

2

3

E C 00 00 0c 10 15 16

D

00 00 0c 10 15 14

00 00 0c 10 15 05

L’attività 1. mappa l’host A sulla porta 1 di Switch-1. L’attività 2. mappa l’host E sulla porta 4 di Switch-1. L’attività 3. mappa l’host B sulla porta 2 di Switch-1. L’attività 4. mappa l’host D sulla porta 4 di Switch-1. L’attività 5. non genera nessuna informazione per Switch-1.



3

Switch

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

23

ESEMPIO



Nella seguente videata è riportato l’output del comando console VKRZ FDP G\QDPLF che mostra il filtering database dello Swich-1: 6ZLWFKVKRZ FDP G\QDPLF

6WDWLF (QWU\  3HUPDQHQW (QWU\  6\VWHP (QWU\ ; 3RUW 6HFXULW\ (QWU\ 'HVW 0$& $GGUHVV 3RUWV $JH    F   F   F   F  

Quando un pacchetto MAC si presenta su una porta subisce il processo di learning, che aggiorna il filtering database; quindi è sottoposto ad un processo di forwarding. Questa volta si analizza l’indirizzo MAC destinatario, si consulta la tabella per cercarne la presenza e, nel qual caso, lo switch inoltra il pacchetto solo sulla porta corrispondente. Se l’indirizzo MAC destinatario invece non compare nel filtering database il pacchetto viene replicato su tutte le porte dello switch tranne quella di provenienza (flooding). In questo modo il numero di pacchetti che circolano sulle stazioni collegate allo switch si riduce drasticamente. Per evitare che alcune righe del filtering database possano diventare obsolete (esempio, quando si cambia l’host su una porta), allo scadere dell’ageing time la riga in tabella viene eliminata. Il filtraggio dei pacchetti sulle porte d’uscita non avviene quando lo switch viene acceso (dato che la CAM è vuota), comportandosi per un certo periodo iniziale dopo l’accensione come un hub, ovvero inoltrando i pacchetti ricevuti su una porta verso tutte le altre porte. Man mano che i pacchetti transitano, la CAM dello switch si riempie e l’operazione di filtraggio si fa sempre più frequente. Lo switch poi ha anche la proprietà di mantenere separati i domini di collisione: ogni coppia di porte su uno switch rappresenta un dominio di collisione, contrariamente all’hub. In questo modo i traffici locali alle stazioni collegate al singolo switch rimangono circoscritti al suo interno e il traffico complessivo diviene ottimizzato in maniera radicale, eliminando gran parte delle collisioni inutili e molti pacchetti che non arriverebbero mai a destinazione. L’introduzione dello switch ha rivoluzionato la tecnologia delle LAN Ethernet, consentendo di poter gestire, su una sigola infrastruttura interconnessa da switch, anche migliaia di stazioni (XLAN, Extended Lan o anche switched LAN). Il collegamento di più switch è valido, però, solo se la topologia fisica che si ottiene dalla loro interconnessione viene mantenuta ad albero, ovvero se viene sempre garantito un unico percorso fisico possibile tra due stazioni qualsiasi della switched LAN. Se così non fosse si corre il rischio che alcuni 24

A2

Dispositivi e instradamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

pacchetti MAC (esempio, con indirizzo destinatario non ancora mappato su nessuna porta degli switch) rimangano indefinitamente in circolazione; inoltre i pacchetti di broadcast causerebbero velocemente l’intasamento della XLAN (broadcast storm). Topologia a maglia S2

Topologia a albero (1)

S1

S2

S1

S2

S1

Topologia a albero (2)

S6

S6

S6

S3

S3

S3

S5

S5

S5

S4

S4

S4

La topologia ad albero per le XLAN induce un potenziale problema di fault tolerance: l’interruzione (o il malfunzionamento) su una qualsiasi tratta di interconnessione tra switch divide in due l’intera rete rendendo le due parti incomunicanti. A questo problema si pone rimedio con switch dotati di funzionalità speciali (Spanning Tree Protocol, cfr. Bridge). La circolazione dei pacchetti in uno switch avviene secondo il diagramma sottostante, in cui si ipotizza un trasferimento dalla stazione A alla stazione D e dalla stazione B alla stazione C. 0

1

101

101101

B

D

A 111

D A

A

B

C

C

2

3 101101

000111

D

B

A

C

011

1

A

00

101101

D

B

C

4

5 101

101101

B

C

A

D

000111

D

000111

A

B

C

Le collisioni su su switch half duplex possono verificarsi nelle seguenti modalità: • Quando una stazione sta trasmettendo e, prima che termini, le giungono trame in ricezione. Rispetto ad un hub, questa eventualità è decisamente più infrequente: avviene solo se la stazione che invia è la stessa che deve ricevere (mentre sull’hub la collisione avviene per qualsiasi coppia di stazioni).

3

Switch

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

25

0

1

101

101101

D

A

B

D

A

C

B

C

2

3

101101

10110 1

D

000111

A

111

A

B

C

B 4

 

A

B

 C

5



D

A

C

 B

D

D

C

PROGRAMMA

• Quando due trasmissioni provenienti da stazioni differenti devono giungere alla medesima stazione «contemporaneamente» (cioè all’interno dell’intervallo di tempo RTD delle rispettive trame). Questa evenienza può essere contrastata dalla presenza di un buffer di transito che sequenzia i due flussi sulla medesima porta separandone l’RTD. Filtering database Data la seguente attività di rete su uno switch a 8 porte, scrivere un programma in linguaggio C che, per ogni pacchetto in entrata su una porta P, indichi la porta di inoltro. Mostrare il filtering database. 3   

0$& 'HVW   G DI I      H E     H EF

0$& 6RXUFH     H EF   I D  G   F I D 

3  

0$& 'HVW II II II II II II   I D  G

0$& 6RXUFH     H EF   I   ƒ 287387

7UDI¿FR  3 0$& 'HVW 0$& 6RXUFH   G DI I     H EF     H E  I D  G     H EF  F I D  II II II II II II    H EF   I D  G  I   D /HDUQLQJ H IRUZDUGLQJ  7UDPD ULFHYXWD VX  ! EURDGFDVW VX        7UDPD ULFHYXWD VX  ! EURDGFDVW VX        7UDPD ULFHYXWD VX  !  7UDPD ULFHYXWD VX  ! EURDGFDVW VX        7UDPD ULFHYXWD VX  !  )LOWHULQJ GDWDEDVH  3  0$&     ( %& 3  0$&   ) $  ' 3  0$&   & ) $  3  0$&     ( %& 3  0$&   )   $

26

A2

Dispositivi e instradamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica





PROGRAMMA

Il codice in linguaggio C:                                                               

LQFOXGH LQFOXGH LQFOXGH LQFOXGH

VWGLRK! VWULQJK! VWGOLEK! KWRLLQF

 IXQ]LRQH KWRL

W\SHGHI VWUXFW ^ LQW SRUWD XQVLJQHG FKDU 0$&G>@ XQVLJQHG FKDU 0$&V>@ ` 75$)),&2 75$)),&2 SW 75$)),&2 SW W\SHGHI VWUXFW ^ LQW SRUWD XQVLJQHG FKDU 0$&>@ LQW DJH ` ),/7(5,1*'% ),/7(5,1*'% SI ),/7(5,1*'% SI LQW )URP0$&WR%\WH FKDU V]PDF LQW RIIV LQW LG[  LQW LV0$&HTXDO XQVLJQHG FKDU PDF XQVLJQHG FKDU PDF  LQW PDLQ YRLG ^ ),/( IS LQW LM Q7 Q) FKDU V]5LJD>@ SULQWI 7UDI¿FR?Q?Q  L  IS IRSHQ WUDI¿FW[W U  IJHWV V]5LJD  IS  SULQWI VV]5LJD  ZKLOH IJHWV V]5LJD  IS  18// ^ SULQWI VV]5LJD  LI V]5LJD>@ ^ LI L  ^ SW PDOORF VL]HRI 75$)),&2  SW SW` HOVH ^ SW UHDOORF SW L VL]HRI SW  SW SWL` SW!SRUWD V]5LJD>@   IRU M  MM ^ SW!0$&G>M@ XQVLJQHG FKDU )URP0$&WR%\WH V]5LJDM  SW!0$&V>M@ XQVLJQHG FKDU )URP0$&WR%\WH V]5LJDM  ` L Q7 L ` ` IFORVH IS  SULQWI ?Q/HDUQLQJ H IRUZDUGLQJ?Q  Q)  IRU L LQ7L ^ LQW WURYDWR WURYDWR  IRU M MQ)M ^ LI SIM !SRUWD SWL !SRUWD ^ LI LV0$&HTXDO SIM !0$& SWL !0$&V ^ WURYDWR 



3

Switch

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

27

PROGRAMMA



28

                                                                

EUHDN ` ` ` LI WURYDWR ^ LI Q)  ^ SI PDOORF VL]HRI SI  SI SI` HOVH ^ SI UHDOORF SI Q) VL]HRI SI  SI SIQ)` Q) SI!SRUWD SWL !SRUWD PHPFS\ SI!0$& SWL !0$&VVL]HRI SI!0$&  ` WURYDWR  IRU M MQ)M ^ LI LV0$&HTXDO SIM !0$& SWL !0$&G ^ SULQWI ?Q7UDPD ULFHYXWD VX G ! G SWL !SRUWD SIM !SRUWD  WURYDWR  ` ` LI WURYDWR ^ SULQWI ?Q7UDPD ULFHYXWD VX G ! EURDGFDVW VX  SWL !SRUWD  IRU M  M M LI M SWL !SRUWD SULQWI G M  ` ` SULQWI ?Q?Q)LOWHULQJ GDWDEDVH?Q?Q  IRU L LQ)L ^ SULQWI ?Q3 G 0$& ; ; ; ; ; ; SIL !SRUWD SIL !0$&>@ SIL !0$&>@ SIL !0$&>@ SIL !0$&>@ SIL !0$&>@ SIL !0$&>@  ` IUHH SW  IUHH SI  UHWXUQ  ` LQW )URP0$&WR%\WH FKDU V]PDF LQW RIIV LQW LG[ ^ FKDU V]%\WH>@ V]%\WH>@ V]PDF>RIIVLG[ @V]%\WH>@ V]PDF>RIIVLG[ @V]%\WH>@  UHWXUQ KWRL V]%\WH  ` LQW LV0$&HTXDO XQVLJQHG FKDU PDF XQVLJQHG FKDU PDF ^ LQW L IRU L LL ^ LI PDF PDF UHWXUQ  PDF PDF ` UHWXUQ  `



A2

Dispositivi e instradamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

PROGRAMMA



4

Il codice fa uso di due strutture dati per descrivere il traffico assegnato, letto da un file di testo traffic.txt (righe 5÷9) e il filtering database che verrà costruito in base ad esso (righe 11÷15). Nel blocco di codice tra riga 28 e riga 47 viene letto il file di testo nel quale, su ogni riga, è memorizzato il traffico dato (in totale 6 righe, la prima riga è l’intestazione). Nel secondo blocco di codice tra riga 49 e riga 94 vengono analizzate ordinatamente le 5 attività, costruito il filtering database (solo se l’attività fornisce una informazione valida) e decisa la porta di inoltro. Infine nel terzo blocco di codice (righe 96÷102) viene stampata sullo schermo la sequenza delle regole che alla fine dell’attività si sono accumulate (filtering database). Il programma usa la funzione htoi() (riga 3) per passare da esadecimale a decimale; una funzione fromMACtobyte() per estrarre il singolo byte da una riga di testo e una funzione isMACequal() per confrontare due indirizzi MAC. Con i dati forniti si nota che un’attività non genera un’informazione già presente nel filtering database; inoltre se per un’attività non si individua la porta di inoltro viene stampato l’inoltro del broadcast, compresa la destinazione di broadcast classica (ff ff ff ff ff ff).

Bridge

Il bridge opera esattamente come uno switch. In realtà il bridge ha un numero limitato di porte, non dovendo sostenere host ma solo collegare altri bridge. Si tratta di un dispositivo legacy e non più diffuso nelle XLAN, sostituito ovunque dallo switch. Il bridge però è stato il primo dispositivo che ha risolto il problema dell’interruzione di un ramo di XLAN introducendo fault tolerance nelle reti switched. dominio di broadcast

dominio di collisione

bridge

dominio di collisione

hub

hub

A differenza dello switch classico, il bridge è in grado di gestire (aprire o chiudere) le sue porte di interconnessione utilizzando un protocollo specifico che opera in modo distribuito tra i vari bridge interconnessi. In questo modo è possibile collegare i bridge senza garantire una struttura ad albero della topologia fisica della rete, ma ricercando invece una struttura

4

Bridge

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

29

a maglia (incompleta) che preveda più cammini possibili tra due qualsiasi stazioni. Il protocollo operante automaticamente tra i bridge riesce infatti a ricostruire una struttura ad albero all’interno della topologia a maglia, chiudendo opportunamente le porte ridondanti. In questo modo se un collegamento tra bridge si interrompe a causa di un guasto, il protocollo agisce automaticamente e, in breve tempo, riottiene una nuova struttura ad albero funzionante, inibendo le porte coinvolte nel guasto. L’algoritmo per la riduzione ad albero (di una rete ridondante a maglia) è detto di Spanning Tree, e il protocollo adottato dai bridge STP (Spanning Tree Protocol, IEEE 802.1D). In seguito STP è stato adottato dagli switch di fascia alta, migliorato e ampliato, cosicché oggi si possono trovare switch che adottano anche contemporaneamente algoritmi di riduzione ad albero come RSTP (Rapid STP o 802.1w) e MSTP (Multiple STP o 802.1s), autonegoziando il protocollo da eseguire.

4.1

Spanning Tree Protocol

Il protocollo STP si colloca, a rigore, a livello 3 Network, dato che si occupa dell’instradamento di pacchetti e opera in maniera distribuita tra i vari nodi bridge tramite speciali trame di servizio denominate BPDU (Bridged PDU). Siccome però le operazioni dello STP avvengono in ambito locale e in autonomia, la letteratura pone i bridge a livello 2 Datalink, benché abbiano capacità di livello 3 Network. Il traffico di BPDU tra i bridge è trasparente e automatico, veicolato con trame 802.3 LLC multicast aventi Protocol type pari a 42h. Ogni porta del bridge possiede un indirizzo MAC e il bridge stesso adotta come MAC address quello della sua prima porta. Inoltre ogni bridge possiede un valore di priorità, impostabile via management o acquisito di default. Anche ogni porta assume un valore di priorità e un valore di costo, allo stesso modo. Con questi dati a disposizione e facendo circolare le BPDU, STP riesce a ridurre una topologia a maglia in una topologia ad albero, bloccando le porte ridondanti in poche decine di secondi. Quando la topologia si modifica, per esempio per l’aggiunta di un nuovo bridge o a causa della rilevazione di un guasto su un collegamento, STP si riavvia automaticamente e ricalcola una nuova topologia ad albero. L’algoritmo agisce secondo le fasi seguenti: 1) Elezione del root bridge. Ogni bridge immette la propria priorità in una BPDU e la fa circolare in multicast; ricevendo varie BPDU da altri bridge confronta la priorità ricevuta con la propria e, se minore, smette di inviare BPDU. Ben presto rimarrà un solo bridge trasmittente, quello con la priorità più bassa, il root bridge eletto. 2) Impostazione della root port. Ogni bridge (tranne il root bridge) deve selezionare una delle sue porte come quella che ora dovrà raggiungere il root bridge appena eletto. Continuando a ricevere su ogni 30

A2

Dispositivi e instradamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

porta le BPDU del root bridge, ricava da esse il root path cost di ogni sua porta. Quella con valore minore viene impostata come root port. D’ora in avanti solo le BPDU ricevute da una root port saranno inoltrate. 3) Impostazione delle designated port. Ogni bridge (compreso il root bridge) deve infine selezionare tra le sue porte (tranne la root port) quelle che devono rimanere aperte (designated port). Come prima, seleziona quelle con root path cost minore o nullo. Tutte le porte rimanenti saranno chiuse (blocked).

ESEMPIO

Una volta raggiunta la topologia ad albero, il root bridge continua a emettere periodicamente BPDU e anche le porte bloccate continuano a riceverle. Questo serve affinché possa essere autorilevato un cambiamento della topologia, per esempio quando un nuovo switch viene aggiunto, oppure uno si spegne, oppure qualche porta si guasta. Lo spegnimento di uno switch e il malfunzionamento di un link causano un timeout sulla ricezione delle BPDU del root bridge per almeno una porta di uno switch ancora attivo. Lo switch in timeout emette in multicast una BPDU speciale detta Topology Change. Ciò riavvierà lo STP e ogni bridge dovrà resettare il proprio filtering database. Se invece un nuovo switch viene aggiunto, tenterà l’elezione del root bridge emettendo una BPDU. Il root bridge, ricevendo una BPDU non emessa da lui, avvierà la fase di Topology Change e il successivo riavvio di STP. Spanning tree Dato il seguente schema di switched LAN a maglia, considerando pari a 10 il costo di ogni porta di ogni switch, applicare l’algoritmo STP per ottenere una topologia ad albero. Bp=32768 00 00 0c 10 15 12

S2 1

2 Bp=32768 00 00 0c 10 15 13

1

Bp=32768 00 00 0c 10 15 11 S1 3 Bp=32768 1 2 00 00 0c 10 15 16 1 S6

S3

2

2

1

S5 1

2

2

Bp=32768 00 00 0c 10 15 05

S4 3 Bp=32768 00 00 0c 10 15 14 L’elezione del root bridge è abbastanza agevole. Inizialmente ogni switch emana una BPDU con la propria priorità. Si nota che tutti gli switch hanno priorità di default (32768), ovvero quella ottenuta alla loro accensione. Quando le priorità coincidono, si passa all’indirizzo MAC: il minore vince l’elezione. In questo caso si tratta dello switch S5, che assume il ruolo di root bridge. Ora si passa ad analizzare, per ogni porta di ogni switch, il root path cost, ovvero il valore che si ottiene, partendo da una porta specifica, raggiungendo S5 e sommando, ad ogni «salto» il costo della porta (costo 10 per tutte). 씰

4

Bridge

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

31

ESEMPIO



Per esempio la porta 1 di S1 raggiunge S5 con quattro «salti» (S2-S3-S4-S5), quindi il suo root path cost vale 40. Per ogni porta va ripetuto il calcolo. Le porte del root bridge hanno ovviamente root path cost uguale a zero. Ora, per ogni switch si può dedurre la root port: è la porta con il root path cost minore. 10+10=20

10+10+10=30

10+10+10+10=40

S2

10+10+10=30

1

2

10+10=20

3

S1

1

2

10+10+10=30

1

1

10+10+10+10=40

S6

S3

2

2

1 0

S5

10+10=20

2

1

2 0

3

S4

10+10+10+10+10=50

10

10+10+10=30

10

Ora bisogna scegliere le designated port e le blocked port. Avendo a disposizione il root bridge e tutte le root port, bisogna ricordare che ora le BPDU partono solo dal root bridge e ogni switch le inoltra solo se le riceve dalla sua root port. Per esempio, alla porta 1 di S6 nessuna BPDU potrà mai arrivare (provare, ricordando che le BPDU ora partono solo da S5 e si propagano solo se ricevute da una root port). Stesso discorso per la porta 1 di S4 e la 1 di S3. Queste porte avranno root path cost = 0. Le altre porte invece vengono raggiunte dalle BPDU. Per esempio, la porta 2 di S1 con il percorso S5-S4-S1: avrà root path cost = 20. Terminata l’analisi delle porte, lo schema diviene: root

10+10+10=30

10+10+10+10=40

S2

root

S1 1

2

1

10+10=20

3

2

0 1

1 0

S6

S3

2

2

1

S5

root 2

1

root

root

2

S4

root

3

0 root

10+10+10=30

Le porte con root path cost=0 sono sicuramente designate. Su S1 invece va designata la porta 2: ha il minor root path cost. La porta 1 di S1, di conseguenza, va bloccata. Su S4 la porta bloccata sarà la 2 (root path cost superiore). L’algoritmo ha raggiunto lo scopo, la nuova topologia ad albero è la seguente: S2

S1 1

2

1

3

2 1

1

S3

S6 2

2

1

S5 1

2

S4

32

A2

2 3

Dispositivi e instradamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

Switch full duplex

5

Gli switch full duplex sono stati introdotti nel 1997 con lo standard IEEE 802.3x. Switch e NIC conformi a questo standard non generano più collisioni, ovvero il meccanismo base di Ethernet, il CSMA/CD, viene disabilitato. Infatti se le stazioni possono trasmettere e ricevere contemporaneamente e lo switch altrettanto sulla porta corrispondente, il mezzo non è più condiviso ma dedicato. A questo punto anche la distanza tra due nodi Ethernet full duplex non ha i limiti dettati da CSMA/CD e dipende solo dalle caratteristiche del mezzo trasmissivo. Questa tecnologia è anche detta Ethernet flow control. 0

1

111 101

11100011 101101101

D

A

B

D

A

B

C

C

2

3

1 101101

D

1

B

A

C

D

B

C

4

5

111000

D

D

A 101

B

5.1

000 101101

A

Alcuni protocolli IEEE si dicono vendor-neutral perché, pur descrivendo una particolare funzionalità di rete, non dettano specifiche stringenti di implementazione, ma solo linee guida. In questo modo i produttori sono liberi di realizzare una versione proprietaria del protocollo, imponendo l’uso dei propri prodotti. LLDP (Link Layer Discovery Protocol, IEEE 802.1AB) è uno di questi. A livello Datalink ha il compito di normare proprio l’autonegoziazione degli apparati di rete.

111000 111000 111000 101101 10110

1110001110001110 1101101101 10110

A

Protocolli vendor neutral

C

B

C

Autonegoziazione

La transizione verso Ethernet flow control è graduale, pertanto gli switch full duplex devono spesso adattare qualche porta a tecnologie half duplex. Per questo motivo gli switch adottano un meccanismo di autonegoziazione attivo su ogni porta che deriva dal LIT di 10BASE T e lo estende. In assenza di traffico, la scheda invia periodicamente un treno di impulsi codificati (NLP, Normal Link Pulses) che comunicano alla porta dello switch alcune informazioni su 16 bit (LCW, Link Code Word). LCW 151413121110 9 8 7 6 5 4 3 2 1 0

next page fault ACK

ability

selector

5

Switch full duplex

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

33

Il campo ability codifica proprio il tipo di supporto della scheda che emette il segnale: bit 5, 10BASE-T; bit 6, 10BASE-T full duplex; bit 7, 100BASE-TX; bit 8, 100BASE-TX full duplex; bit 9, 100 BASE-T4; bit 10, pause; bit 11, asymmetric pause; bit 12, reserved.

ESEMPIO

In questo modo lo switch può sostenere sia NIC full duplex che NIC half duplex consentendo l’interoperabilità dei dispositivi di rete. L’LCW consiste in una serie di impulsi a frequenza regolare che occupano in totale 2 ms: durante questo tempo la scheda può emettere al minimo 17 impulsi (per 16 bit a 0) o al massimo 33 impulsi (per 16 bit a 1). Autonegoziazione Mostrare la codifica impulsiva di un’autonegoziazione NLP per un NIC 100BASE-TX full duplex. La codifica impulsiva dei 16 bit LCW avviene entro un intervallo di 2 ms (millisecondi). Un bit a 1 viene trasmesso con un impulso a metà del bit time dedicato al bit 0. La codifica segue la prassi little endian (il primo bit trasmesso ha peso 0 e l’ultimo ha peso 15).

bit

1

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

+ 0 tempo 2 ms

PROGRAMMA

I due bit a 1 presenti nella sequenza in figura (di peso 8 e di peso 15) significano rispettivamente 100 BASE-TX e next page.

Autonegoziazione Scrivere un programma in linguaggio C che, presa in ingresso una stringa binaria di 16 caratteri, stampi la codifica impulsiva dell’LCW corrispondente. /$L3RV@  L5Y   ` `

UHWXUQ L5Y

Dopo la sezione di input dei 16 caratteri binari (righe 16÷24), viene stampato il valore dell’LCW in decimale, interpretando la sequenza di bit in big endian con la funzione szBinarytoDec() alla riga 27. Quindi si stampa la sequenza binaria dell’LCW (righe 29÷33) e la relativa coppia di caratteri grafici “| “ o “||” a seconda del valore del bit corrispondente (0 o 1) nel blocco tra le righe 36÷40.

5.2

MAC control

Negli switch full duplex vengono evitate le collisioni, prevedendo due canali fisici separati per ricezione e trasmissione. Due o più flussi contemporanei diretti verso un’unica porta/stazione sono regolati da appositi buffer di memorizzazione, sia sulla scheda, sia su ogni porta dello switch. Quando i buffer sono pieni (per esempio, in presenza di un traffico di broadcast o nel caso di

5

Switch full duplex

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

35

porte con diverso bitrate), gli switch e le NIC full duplex utilizzano un protocollo speciale denominato MAC control per inviare ai nodi trasmittenti particolari pacchetti di servizio (PAUSE) che li mettono in pausa temporanea. 0

1

Buffer PORTA

A

A

Buffer PORTA soglia

soglia

B

Buffer NIC

B

Buffer NIC soglia

soglia 2

Buffer PORTA

A

3

A PAUSE

Buffer PORTA

soglia

soglia

B

Buffer NIC

B

Buffer NIC soglia

soglia 4

5 PAUSE

Buffer PORTA

A

A PAUSE

soglia

soglia

B

Buffer NIC

B

Buffer NIC soglia

soglia 6

7

Buffer PORTA

A

A

Buffer PORTA

soglia

soglia

B

Buffer NIC

B Buffer NIC

soglia

soglia

Il MAC control è standardizzato nel documento IEEE 802.3x e viene veicolato con pacchetti Ethernet aventi Ethertype pari a 8808h. È quindi un protocollo completamente trasparente. In definitiva negli switch full duplex mancano sì le collisioni, ma può comunque originarsi una latenza a causa dei pacchetti di PAUSE.

6

Managed switch (VLAN)

Quando una switched LAN diventa molto ampia, benché con domini di collisione ben partizionati, rimane comunque vulnerabile all’intenso traffico di broadcast che non viene trattenuto dagli switch. 36

A2

Dispositivi e instradamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

Inoltre è spesso desiderabile che insiemi (logici) di stazioni non abbiano nulla a che fare con altri insiemi di stazioni (esempio, i personal computer dell’amministrazione con i personal computer della progettazione di un’azienda), cercando di ottenere che ogni singolo pacchetto circolante tra uno di questi insiemi non raggiunga mai una stazione dell’altro insieme, se non attraverso una precisa regola impostata a priori. VLAN 1 VLAN-ID 1

managed switch

managed switch

VLAN VID 1

VLAN 2 VLAN-ID 2

VLAN VID 2

dominio di broadcast

dominio di broadcast

router

In questi casi si può utilizzare una tecnica di partizionamento delle stazioni denominata VLAN (Virtual LAN, IEEE 802.1Q) basata su managed switch, ovvero switch che devono essere configurati specificando alcuni parametri operativi per ognuna delle porte di cui sono dotati. Il traffico di servizio generato dalle VLAN è trasportato da frame Ethernet 2 con Protocol type pari a 8100h, attivo fondamentalmente allorquando si connettono tra di loro più managed switch affinché gli stessi possano operare con le stesse regole condivise. In un managed switch si possono impostare le n porte dell’apparato come facenti parte di m insiemi (in questo caso m VLAN) in modo tale che le stazioni connesse a quelle porte possano appartenere di fatto a m LAN differenti, con domini di broadcast separati. Con un’operazione di configurazione manuale (management), prima si creano le VLAN sullo switch, definendole con un identificativo numerico progressivo (VLAN-ID), quindi ogni porta può essere assegnata ad una VLAN. In questo caso la porta dello switch è detta access port. Nel caso si volesse mettere in contatto due (o più) VLAN, è necessario connettere alle VLAN un router che, operando a livello 3, analizza e inoltra i pacchetti tra le VLAN con regole esplicite (inter-VLAN routing). Se l’estensione della switched LAN è molto ampia, può essere il caso di dover connettere tra di loro più managed switch e quindi ottenere una serie di VLAN per ogni managed switch utilizzato. Si consideri che su diversi managed switch possono, e spesso devono, essere presenti anche le stesse VLAN. In questi casi i managed switch coinvolti devono avere configurata almeno una porta in modalità trunk, la porta di collegamento (tagged port). Attraverso questa porta transiteranno quei pacchetti che vanno da

6

Managed switch (VLAN)

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

Switch, router e broadcast Il modo classico per separare i domini di broadcast su una LAN è utilizzare un router come dispositivo di connessione tra due (o più) sottoreti: router

Il router però è un apparato che opera a livello 3 OSI (Network) e non a livello 2 Data link e, come tale, necessita di una configurazione esplicita. Per separare i domini di broadcast e avere contemporaneamente funzionalità di routing, sono molto diffusi in ambienti enterprise (reti complesse) anche gli switch layer 3, normalmente più veloci nello smistamento dei pacchetti di un router classico, ma senza la possibilità di connessioni a reti WAN.

37

porte trunk managed switch

managed switch

VLAN 1 VLAN-ID 1

VLAN 3 VLAN-ID 3

VLAN 1 VLAN-ID 1

VLAN 2 VLAN-ID 2

una VLAN di uno switch ad un’altra VLAN (spesso la stessa) di un altro switch. I pacchetti che transitano sulle porte trunk vengono ricreati prima dell’inoltro, aggiungendo all’header del frame Ethernet originale quattro byte(NB) che contengono il VLAN-ID della VLAN a cui appartiene quel pacchetto. In questo modo lo switch ricevente sarà in grado di inoltrare il frame originale sulla corretta VLAN di destinazione, rimuovendone l’intestazione di trunking. frame 802.1Q (tagged) intestazione

preambolo 7

dati

SFD MAC destinatario MAC mittente TPID TCI Ethertype 1 6 6 2 2 2

Information 46÷1500

coda

FCS 4

TCI 1514 13121110 9 8 7 6 5 4 3 2 1 0

Priority Drop

VLAN-ID

Il campo TPID contiene sempre l’Ethertype 8100h in modo tale che i dispositivi in lettura della trama possano immediatamente essere in grado di decodificare il campo TCI che contiene l’id. numerico della VLAN a cui appartiene il pacchetto.

NB. L’aggiunta di 4 byte al frame Ethernet potrebbe causare il superamento del limite di dimensione per il pacchetto (esempio, superare 1518 bytes totali passando a 1522 bytes), situazione formalmente non consentita per il MAC di Ethernet.

38

A2

Dispositivi e instradamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

ESEMPIO

Impostazione VLAN Impostare su un managed switch Cisco tre VLAN con 1, 2 e 18 porte, quindi veicolare la VLAN più numerosa su una porta trunk e tutte le VLAN su una seconda porta trunk. Nella seguente videata è riportata la sequenza di comandi per creare una VLAN (VLAN-ID=10 e nome itispr) su uno switch di marca Cisco di nome 6ZLWFK: 6ZLWFK FRQ¿J YODQ  6ZLWFK FRQ¿JYODQ QDPH LWLVSU Ora i comandi per creare altre due VLAN (VLAN-ID 20 e 30, uffici e test): 6ZLWFK FRQ¿J YODQ  6ZLWFK FRQ¿JYODQ QDPH XI¿FL 6ZLWFK FRQ¿JYODQ H[LW 6ZLWFK FRQ¿J YODQ  6ZLWFK FRQ¿JYODQ QDPH WHVW Quindi l’assegnazione delle porte alle tre VLAN. Prima le due porte 22 e 23 sulla VLAN test (VLAN-ID=30): 6ZLWFK FRQ¿J LQWHUIDFH ID 6ZLWFK FRQ¿JLI VZLWFKSRUW DFFHVV YODQ  6ZLWFK FRQ¿JLI H[LW 6ZLWFK FRQ¿J LQWHUIDFH ID 6ZLWFK FRQ¿JLI VZLWFKSRUW DFFHVV YODQ  Quindi, in modo compatto, le altre porte alle VLAN uffici e itispr: 6ZLWFK FRQ¿J LQWHUIDFH UDQJH ID 6ZLWFK FRQ¿JLI VZLWFKSRUW DFFHVV YODQ  6ZLWFK FRQ¿JLI H[LW 6ZLWFK FRQ¿J LQWHUIDFH UDQJH ID 6ZLWFK FRQ¿JLI VZLWFKSRUW DFFHVV YODQ  La configurazione dello switch può essere mostrata con il comando VKRZ: 6ZLWFKVKRZ YODQ EULHI 9/$1 1DPH 6WDWXV ² ²²²²²²²²²²± ²²²  GHIDXOW DFWLYH  LWLVSU DFWLYH

 

XI¿FL WHVW

DFWLYH DFWLYH

3RUWV ²²²²²²²²²² )D *L *L )D )D )D )D )D )D )D )D )D )D )D )D )D )D )D )D )D )D )D )D )D )D )D

Infine si impostano le due porte Giga Ethernet come porte di trunk e si assegnano ad esse le VLAN che devono veicolare: 6ZLWFK FRQ¿J LQWHUIDFH *L 6ZLWFK FRQ¿JLI VZLWFKSRUW PRGH WUXQN 6ZLWFK FRQ¿JLI VZLWFKSRUW WUXQN DOORZHG YODQ DGG  6ZLWFK FRQ¿JLI H[LW 6ZLWFK FRQ¿J LQWHUIDFH *L 6ZLWFK FRQ¿JLI VZLWFKSRUW PRGH WUXQN 6ZLWFK FRQ¿JLI VZLWFKSRUW WUXQN DOORZHG YODQ DOO Si nota che un managed switch non ancora configurato possiede una VLAN con id=1 detta di default che raggruppa tutte le porte.

6

Managed switch (VLAN)

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

39

7

Switch virtuali

Lo switch virtuale, a differenza dello switch classico, è un oggetto software, cioè un programma che emula il funzionamento di uno switch propriamente detto. Essendo un oggetto software, possiede porte software (virtuali) a cui si «connettono» schede di rete software (virtuali). In realtà lo switch software fa parte di un sistema di virtualizzazione che comprende un intero sistema operativo per comporre quella che in gergo informatico viene detta macchina virtuale (VM, Virtual Machine).

7.1 SISTEMA OPERATIVO

VM

Virtualizzazione

Da tempo sul mercato esistono programmi di virtualizzazione, ovvero programmi che, installati su un sistema operativo «padre», creano un ambiente isolato all’interno del quale opera un secondo sistema operativo del tutto indipendente, la macchina virtuale. Nella figura a lato, il sistema operativo «padre», dotato di una interfaccia di rete, ha creato una VM con un suo proprio sistema operativo e che possiede una scheda di rete NIC virtuale. Entrambi i sistemi accedono «contemporaneamente» alla rete, in modo indipendente e con le proprie configurazioni. La scheda di rete virtuale possiede infatti un proprio indirizzo MAC ed eventualmente anche un proprio indirizzo IP. Per comunicare in rete la NIC virtuale «sfrutta» la NIC fisica: il software di virtualizzazione installato sul sistema operativo «padre» arbitra la risorsa fisica in base alle richieste dei due sistemi operativi. Se all’inizio i programmi di virtualizzazione sono stati concepiti per poter utilizzare programmi applicativi legacy su macchine fisiche dotate di sistema operativo inappropriato per quegli applicativi, da qualche tempo questa funzionalità ha prepotentemente invaso anche il mondo delle reti, soprattutto per merito di un’azienda produttrice, VMWare Inc. Anche altre aziende operano proficuamente nel mondo della virtualizzazione, come Microsoft e Citrix. L’adozione di un sistema virtualizzato basato su una sola macchina fisica denominata Host comporta una serie di opportunità molto preziose: • Consolidamento. Su una sola macchina fisica operano più sistemi operativi (VM) e quindi più applicazioni. In questo modo si risparmiano i costi dell’hardware. • Centralizzazione. Le attività di gestione (management) possono essere svolte con un solo referente fisico e in un solo luogo fisico. In questo caso si risparmia sul costo del lavoro (meno addetti). • Storage e backup. I dati generati dalle applicazioni sono gestiti in modo coordinato e con tecnologie dedicate. In questo modo si risparmia sui costi di recupero dai disastri informatici. • Scalabilità. L’ampliamento di un sistema virtualizzato è semplice, potendo associare più Host tra di loro.

40

A2

Dispositivi e instradamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

Lo schema classico di un sistema virtualizzato è il seguente: SISTEMA OPERATIVO

SISTEMA OPERATIVO

VM1

VM2

VM3

VM1

VM2

VMn

applicativi

applicativi

applicativi

applicativi

applicativi

applicativi

virtual machine monitor

virtual machine monitor

HARDWARE

rete

Host 2

Host 1 fibra ottica

storage

7.2

vSwitch

I sistemi virtuali hanno una diffusa applicazione anche come supporto a reti di notevoli dimensioni, sia per realizzare cloud computing, sia per ottimizzare grandi reti switched. Normalmente le VM ospitano programmi applicativi di tipo server, tipo programmi gestionali, server di database, web server, ecc., ognuno installato sul proprio sistema operativo più congeniale. Host

VM1

VM2

VM3

vSwitch

Un Host virtualizzato, contenente varie VM con altrettante NIC virtuali, può connetterle emulando un managed switch software detto switch virtuale (vSwitch, virtual Switch).

7

Switch virtuali

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

41

ESEMPIO

Nello schema della figura compaiono 3 VM con altrettante NIC virtuali, connesse ad un vSwitch; sullo stesso è attestata un’interfaccia fisica di rete (NIC) dell’Host che a sua volta comunica con il mondo esterno essendo collegata ad un managed switch classico. Ogni vSwitch può connettersi a una sola interfaccia fisica, quindi se si volesse incrementare la banda del sistema aggiungendo interfacce fisiche all’Host, è necessario creare tanti vSwitch quante sono le schede di rete dell’Host. Per configurare un sistema del genere vanno fatte operazioni sia sull’Host, che sullo switch esterno,tipicamente configurazioni in modalitàVLAN 802.1Q. Configurazione di un sistema VNWare Disegnare lo schema di un Host VMWare che ospita quattro VM su cui operano il programma gestionale di un’azienda, un database server aziendale, un web server e un server di posta elettronica. Riportare l’elenco delle VLAN utilizzate compreso di porte access e trunk per vSwitch e managed switch. La schematizzazione del sistema potrebbe essere quella rappresentata in figura, in cui si fa uso di tre VLAN 1,2,3 e due vSwitch 1,2. Su VLAN1 si accumula il traffico interno per database server e programma gestionale; su VLAN2 si accumula il traffico della posta elettronica e su VLAN3 il traffico web. VLAN 2 VLAN-ID 2 dbase Gestionale VLAN 1 VLAN-ID 1

email

web

VM1

VM2

VM3

VM4

1

2

1

2

vSwitch1

vSwitch2 3

3

managed switch 1

2

6

3 5

La configurazione degli apparati:

4

VLAN 2 VLAN-ID 2

VLAN1 su vSwitch1: porte 1,2,3; trunk: porta 3. VLAN1 su managed switch: porte 1,6; trunk: porta 1. VLAN2 su vSwitch2: porte 1,3; trunk: porta 3. VLAN2 su managed switch: porte 1,2,3,4,5,6; trunk: porta 2. VLAN3 su vSwitch2: porte 2,3; trunk: porta 3. VLAN3 su managed switch: porte 2,3; trunk: porta 2.

42

A2

Dispositivi e instradamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

VLAN 3 VLAN-ID 3

7.3

Link aggregation

Già da molto tempo (1990) si è affrontata la possibilità di aumentare la larghezza di banda di una connessione Ethernet punto-punto (esempio, tra due switch), utilizzando per lo stesso flusso due o più canali fisici in parallelo. Dal 2008 l’IEEE ha rilasciato uno standard che descrive il LACP (802.1AX, Link Aggregation Control Protocol), il protocollo che consente di aggregare un collegamento Ethernet su due o più linee fisiche. Tipicamente l’operazione avviene tra due switch o tra uno switch e una macchina server e, oltre ad aumentare la banda della linea, aggiunge un buon grado di tolleranza ai guasti sul collegamento: quando una delle linee si guasta, il protocollo autonomamente «carica» le rimanenti. Link aggregation

1

NIC 1

2 NIC 2 1

2

1

2

Il protocollo LACP, se previsto dai dispositivi (switch e NIC) opera autonomamente negoziando sia il collegamento, sia il tipo di bilanciamento di carico da ripartire sulle linee. Si basa, come sempre, su pacchetti LACPPDU Ethernet con uno speciale Ethertype che vale 8802h. Il link aggregation è prezioso anche per aumentare la larghezza di banda delle interfacce fisiche dei vSwitch in sistemi virtualizzati.

8

Traffico e dimensionamento

È abbastanza interessante capire se una rete LAN switched è organizzata in modo da servire adeguatamente gli utenti in base alla quantità di traffico di cui necessitano. Per essere in grado di dimensionare correttamente le porzioni di una rete LAN è possibile effettuare il calcolo del traffico in ogni suo ramo e verificare se ogni dispositivo è ben dimensionato. I dispositivi di interconnessione su cui è necessario effettuare il calcolo del flusso sono hub e switch (half e full duplex), pertanto si analizzano i flussi veicolati da questi dispositivi nel caso tipico in cui devono servire una certa quantità di host che scambiano dati su una o più porte di destinazione (di uplink o collegate a server), che è la situazione tipica. Nei casi analizzati si fanno due ipotesi base che consentono di generalizzare i calcoli, ovvero: • il traffico degli host è omogeneo: ogni host connesso allo stesso dispositivo genera la stessa quantità di traffico (esempio, X); • non si calcola l’effetto delle collisioni, ritenendole equipartite per ogni host.

8

Traffico e dimensionamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

43

Per ogni configurazione va analizzato il flusso di traffico generato dagli host sulla porta di destinazione. Dato il numero n di host che generano ognuno un traffico X, se la porta di destinazione è una sola, il flusso su di essa vale n · X. Se le porte di destinazione sono più di una, è necessario specificare la percentuale di traffico su ognuna. Per esempio, due porte di destinazione con 25% di traffico sulla prima e 75% sulla seconda, subiranno rispettivamente da n host i due flussi (1/4) · n · X e (3/4) · n · X (la somma dei due traffici deve ritornare ad essere n · X). 4X

X

X

X

X

X

X

X

3X

X

X

ESEMPIO

In condizioni ideali nel primo caso ogni host può disporre di un quarto della banda totale, dovendo poi immettere sulla porta di destinazione l’intero traffico 4X delle stazioni. Nel secondo caso, invece, se su ogni porta di destinazione è disponibile l’intera banda del dispositivo, ecco che la condizione peggiore viene imposta dalla porta che deve veicolare 3X di traffico, per cui il singolo host può disporre di un terzo della banda disponibile. Dimensionamento di una LAN Un’Azienda usa una LAN su cui lavorano due utenti dell’amministrazione e 5 utenti della progettazione. I calcolatori sono connessi a uno switch full duplex 100Mbit/s a 8 porte a cui è collegato l’unico server. Calcolare quanta banda ha a disposizione ogni utente. Calcolare quanta banda si guadagna usando due server differenti. La LAN ha questa struttura: dominio di broadcast

Siccome i 7 host generano traffico omogeneo verso l’unico server, ogni singolo host avrà un traffico denominato X. 씰

44

A2

Dispositivi e instradamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

ESEMPIO



Quando lavorano «contemporaneamente» generano quindi un flusso verso il server di 7X. Dovendo spartirsi la banda dello switch 100 Mbit/s sull’unico ramo di destinazione al server, vale l’equazione 7X = 100 Mbit/s, da cui si ricava X = 100/7 = 14,3 Mbit/s. 100

7X

X

X

X

X

X

X

Mbps

14.3 14.3 14.3 14.3 14.3 14.3 14.3 Mbps Mbps Mbps Mbps Mbps Mbps Mbps

X

Con due server si possono distinguere due tipi di traffico: X originato dagli utenti dell’amministrazione verso il proprio server, e Y generato dagli utenti progettisti. Ora sono presenti due flussi, 2X e 5Y verso i rispettivi server. La banda per gli utenti amministrativi sarà ora determinata dall’equazione 2X = 100 Mbit/s e la banda per gli utenti progettisti dall’equazione 5Y = 100 Mbit/s. Risolvendo si ottiene X = 50 Mbit/s e Y = 20 Mbit/s. 2X

X

5Y

Y

Y

Y

Y

X

100

100

Mbps

Mbps

50

Y

20

20

20

20

50

20

Mbps Mbps Mbps Mbps Mbps Mbps Mbps

In definitiva due utenti guadagnano 50 – 14,3 = 35,7 Mbit/s di banda e cinque utenti guadagnano 20 – 14,3 = 5.7 Mbit/s di banda.

Per il calcolo della banda disponibile per gli host e per la porta di destinazione il caso ideale è rappresentato dagli switch full duplex. Per hub e switch half duplex bisogna differenziare i casi, dato che la banda che mettono a disposizione va ripartita sulle varie porte in diversi modi. In un hub ogni singolo pacchetto trasmesso da una stazione viene ripetuto su ogni porta. Per esempio, nel caso peggiore in cui 4 host devono comunicare attraverso una porta di destinazione, quando un singolo host invia un pacchetto, questo si propaga a tutti gli altri host; quindi dalla porta di destinazione giunge un pacchetto di risposta, che a sua volta si propaga a tutti gli altri host. Ora su ogni singolo ramo dell’hub stanno circolando 2 pacchetti. Se la stessa operazione viene ripetuta dagli altri tre host, abbiamo altri 6 pacchetti che circolano sui singoli rami dell’hub, per un totale di 8 pacchetti su ogni singolo ramo. In definitiva, detto X il traffico di un utente su hub con n porte e una porta di destinazione, il traffico su ogni ramo vale 2 ⫻ n ⫻ X. In generale su ogni porta di un hub si genera un traffico uguale alla somma di tutti i traffici su tutte le sue porte. Nel caso in figura (a lato), il traffico su ogni ramo è uguale a 8 pacchetti, perciò ogni singolo host può generare al più un ottavo di banda b totale.

8

Traffico e dimensionamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

Banda=b/8 4X b/2

50 Mbps

4X  4 4 

100 Mbps

3   11 3  

b/8 b/8 b/8 b/8 14.3 Mbps

45

Banda=b/8 4X b/2

Siccome sulla porta di destinazione deve transitare un flusso di 4X, la banda rimanente per la porta di destinazione vale (1/8)b ⫻ 4 = b/2. In uno switch half duplex i pacchetti non vengono duplicati, ma nel ramo di destinazione abbiamo comunque 8 pacchetti (4 utili e 4 risposte), mentre su ogni ramo degli host abbiamo solo 2 pacchetti (1 utile e 1 risposta): lo switch manda a destinazione i pacchetti senza duplicarli su altre porte. Il caso peggiore rimane sul ramo della porta di destinazione con 8 pacchetti, pertanto ogni singolo host può generare solo un ottavo della banda totale. Di nuovo, sulla porta di destinazione transita un flusso di 4X, e la banda rimanente per la porta di destinazione vale (1/8)b ⫻ 4 = b/2. In uno switch full duplex i pacchetti non vengono né duplicati né si occupa banda per le risposte, pertanto nel ramo di destinazione abbiamo solo 4 pacchetti (4 utili e 4 risposte contemporanee che non sprecano banda); per lo stesso motivo su ogni ramo degli host abbiamo solo 1 pacchetto (la risposta non occupa banda utile). Il caso peggiore rimane sul ramo della porta di destinazione con 4 pacchetti, pertanto ogni singolo host può generare un quarto della banda totale. Ora, sulla porta di destinazione transitando un flusso di 4X, la banda disponibile vale (1/4)b ⫻ 4 = b, cioè la banda totale dello switch full duplex.

50 Mbps

4X  4 4 

100 Mbps

 1 1 

b/8 b/8 b/8 b/8 12.5 Mbps

Banda=b/4 4X b

100 Mbps

4X  4 4 

100 Mbps

 1 1 

b/4 b/4 b/4 b/4 25

ESEMPIO

Mbps

Dimensionamento di una LAN segmentata

I flussi sulle porte si calcolano con le rispettive regole:

Un’Azienda usa una XLAN con tre LAN: in una operano 4 utenti dell’amministrazione, collegati ad un hub; in un’altra LAN operano 10 addetti alla produzione connessi ad uno switch half duplex; lo switch e l’hub sono interconnessi da un altro switch a cui sono collegati anche due server SI (interno) e SW (dati web). Si ipotizza che in amministrazione gli utenti lavorino solo con SI, mentre in produzione gli addetti lavorano al 50% su SI e al 50% su SW. Calcolare le bande sulle porte dello switch principale e confrontarle con quelle ottenute se tutti i dispositivi fossero switch full duplex. La XLAN descritta è la seguente:

LAN1 8 host omogenei, detto X il traffico di ognuno, sulla porta di destinazione si ha un flusso 8X. LAN2 4 host omogenei, detto Y il traffico di ognuno, sulla porta destinazione si ha un flusso di 4Y. LAN0 verso SI giunge un flusso 4X+4Y, mentre su SW un traffico di 4X. LAN0 SI

SW

4X+4Y

4X

LAN0

LAN1

4Y

8X

LAN1

SI

SW

LAN2

Y X

X

X

X

X

X

X

LAN2

Y

Y

Y

X

Le bande si calcolano con le rispettive regole: LAN1 Siccome abbiamo uno switch half duplex con 씰

46

A2

Dispositivi e instradamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

ESEMPIO



una sola porta di destinazione e 8 host, la banda di un host vale b/16, cioè 16X = 100 Mbit/s, da cui X = 6,25 Mbit/s.

Se i tre dispositivi fossero tutti switch full duplex il calcolo dei flussi rimane ovviamente invariato ma quello delle bande cambia:

LAN2 Con un hub e 4 host a prescindere dal numero di porte di destinazione, la banda di un host vale b/8, cioè 8Y = 100 Mbit/s, da cui Y = 12,5 Mbit/s.

LAN1 switch full duplex con 8 host, la banda di un host vale b/8, cioè 8X = 100 Mbit/s, da cui X = 12,5 Mbit/s. Il guadagno di banda vale 6,25 Mbit/s.

LAN0 su SI abbiamo 4X+4Y, cioè 4 · 6,25 + 4 · 12,5 = 25+50 = 75 Mbit/s. Siccome si tratta di uno switch a 100 Mbit/s, si conclude che per SI la rete è ben dimensionata. Su SW abbiamo 4X, cioè 4 · 6,25 = 25 Mbit/s, e di nuovo per SW la rete è ben dimensionata.

LAN2 switch full duplex con 4 host, la banda di un host vale b/4, cioè 4Y = 100 Mbit/s, da cui Y = 25 Mbit/s. Il guadagno di banda vale 12,5 Mbit/s. LAN0 SI

SW 50

150

Mbps

Mbps

LAN0 SI

SW

LAN1 25

75

Mbps

Mbps

LAN1

LAN2

LAN2 25

25

25

25

Mbps Mbps Mbps Mbps

12.5 12.5 12.5 12.5 12.5 12.5 12.5 Mbps Mbps Mbps Mbps Mbps Mbps Mbps

12.5 12.5 12.5 12.5 Mbps Mbps Mbps Mbps 6.25 6.25 6.25 6.25 6.25 6.25 6.25 Mbps Mbps Mbps Mbps Mbps Mbps Mbps

6.25 Mbps

12.5 Mbps

Si nota però che la porta verso SI della LAN0, dovendo sopportare 4X+4Y = 4 · 12,5 + 4 · 25 = 50+100 = 150 Mbit/s, è insufficiente.

Il traffico interno ad uno switch half duplex è sensibilmente più veloce di un equivalente traffico interno ad un hub, dato che se le comunicazioni sono disgiunte è sempre disponibile la banda massima su ogni porta. Ma quando si deve calcolare il flusso nel caso di una sola porta di destinazione, lo switch half duplex si comporta come un hub. Se invece le porte di destinazione aumentano, lo switch half duplex ritorna ad essere più efficiente di un hub equivalente, come si nota dalla figura. Banda=b/8 2X b/4 25

2X

50

Mbps Mbps

 4 4 

Banda=b/4 2X b/2

25

2X

2X

 4 4 

 2 2 

100

b/8 b/8 b/8 b/8 12.5 Mbps

Mbps Mbps

100 100 Mbps Mbps

2X

2X

 2 2 

 2 2 

2X  2 2 

100

100

Mbps

3   11 3  

Banda=b/2 2X b

50

Mbps

Mbps

 1 1 

 1 1 

b/4 b/4 b/4 b/4

b/2 b/2 b/2 b/2 50

25

Mbps

Mbps

8

Traffico e dimensionamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

47

ESEMPIO

Dimensionamento di una LAN con router Un’Azienda usa una XLAN con tre LAN connesse da un router: in una operano 16 addetti alla produzione e un server S1 connessi ad un hub; in un’altra LAN operano 6 utenti dell’amministrazione e un secondo server S2 collegati ad uno switch full duplex; hub e switch sono connessi da un router che ha anche un collegamento Internet. In produzione gli utenti lavorano per l’80% sul proprio server e il rimanente su Internet. In amministrazione invece gli utenti lavorano per il 50% sul proprio server e il rimanente su Internet. Calcolare le bande disponibili e confrontarle con quelle ottenute sostituendo l’hub con uno switch half duplex. Lo schema della rete è il seguente: LAN0

LAN1

LAN2

S1

S2

I flussi sulle porte si calcolano con le rispettive regole: LAN1 con 16 host omogenei e traffico per l’80% su S1 e 20% su Internet (router), detto X il traffico di ognuno, verso il server S1 si ha un flusso (80 · 16/100)X = 12,8X, mentre verso il router (20 · 16/100)X = 3,2X. LAN2 con 6 host omogenei con traffico suddiviso tra S2 e Internet (router), detto Y il traffico di ognuno, verso S2 si ha un flusso di 3Y e verso il router di 3Y. LAN0 Sulla porta verso Internet il flusso è la somma dei due flussi provenienti da LAN1 e LAN2, ovvero 3,2X+3Y. LAN0 3.2X+3Y LAN1 S1

3Y

3.2X

LAN2 S2

12.8X

3Y

Y X

X X

48

X X

A2

X X

X X

X X

X X

Y

Y

Y

Y

Y

X X

X

Dispositivi e instradamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica





ESEMPIO

Per il calcolo delle bande disponibili: LAN1 Un hub con 16 host, a prescindere dal numero di destinazioni, suddivide la banda del dispositivo per 32, cioè ogni host ha b/32 di banda, cioè 32X = 100 Mbit/s, da cui X = 3,125 Mbit/s. Sulle due destinazioni si hanno quindi: S1 = 12.8X = 12.8 · 3,125 = 40 Mbit/s e verso il router 3,2X = 3,2 · 3,125 = 10 Mbit/s. LAN2 Uno switch full duplex con 6 host comporta che ogni host possa generare un traffico b/6, ovvero 6Y = 100 Mbit/s, da cui Y = 16,7 Mbit/s. La banda verso il router e verso S2 è identica, 3Y = 3 · 16,7 = 50 Mbit/s. LAN0 Effettuando i calcoli, per Internet la banda vale 3,2X+3Y = 3,2 · 3,125+3 · 16,7 = 10 + 50 = 60 Mbit/s. LAN0 60 Mbps

LAN1

10

50

Mbps

Mbps

S1

LAN2 S2

40

50

Mbps

Mbps

16.7 Mbps 2.125 Mbps

Se al posto dell’hub si utilizzasse uno switch half duplex, avendo due destinazioni all’80% e al 20% ognuna in grado di supportare la massima velocità del dispositivo, l’80% del traffico degli host può usufruire della banda b e il 20% della stessa banda b, ovvero: 80% · 32X = 100 Mbit/s (e 20% · 32X = 100 Mbit/s), da cui X = 3,9 Mbit/s (e X = 15,6 Mbit/s). Tra questi due valori si considera il peggiore, pertanto X = 3,9 Mbit/s. In questo caso le rimanenti bande risultano: S1 = 12.8X = 50 Mbit/s; router = 3,2X = 12,5 Mbit/s; internet = 3,2X+3Y = 12,5+50 = 62,5 Mbit/s. Se infine si usasse uno switch full duplex al posto dell’hub, come prima l’80% del traffico degli host (e il 20%) avrebbero a disposizione l’intera banda b del dispositivo, cioè: 80% · 16X = 100 Mbit/s (e 20% · 16X = 100 Mbit/s), da cui X = 7,8 Mbit/s (e X = 31,25 Mbit/s). Tra questi due valori, per X va preso quello peggiore, 7,8 Mbit/s, che comunque fa guadagnare alla LAN una prestazione più che raddoppiata rispetto al caso con l’hub. In questo caso le rimanenti bande risultano: S1 = 12.8X = 99,8 Mbit/s; router = 3.2X = 25 Mbit/s; internet = 3,2X+3Y = 25+50 = 75 Mbit/s.

8

Traffico e dimensionamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

49

UESITI ESERCIZI PER LA VERIFICA ORALE Saper rispondere ai requisiti fondamentali dà una sufficiente garanzia per sentirsi pronti all’interrogazione. Saper anche rispondere ai requisiti avanzati dimostra una padronanza eccellente degli argomenti del capitolo. Requisiti fondamentali

Requisiti avanzati

1

Elencare tutti gli apparati di interconnessione per le LAN e collocarli al proprio livello operativo OSI.

1

Spiegare cosa si intende con «management» di una LAN e mostrarne un esempio.

2

Descrivere la circolazione dei frame all’interno di un hub.

2

Mostrare quando avvengono le collisioni rispettivamente in un hub, in uno switch e in uno switch full duplex.

3

Descrivere la circolazione dei frame all’interno di uno switch.

3

Descrivere quando e perché un apparato di interconnessione inoltra un pacchetto in flooding.

Spiegare perché uno switch appena avviato si comporta come un hub.

4

Illustrare il concetto di CAM e filtering database.

5

Spiegare come si ottiene fault tolerance in una rete LAN.

6

Spiegare quando avviene il broadcast storming e come si previene.

7

Elencare e discutere le tre fasi operative dell’algoritmo che guida STP.

8

Access port e porte di trunk per una VLAN: illustrarne ruoli e funzioni.

9

Spiegare la funzione del campo ageing time nel filtering database.

4

5

Illustrare la topologia fisica di una switched LAN e la ragione per cui deve essere connessa in quel modo.

6

Mostrare il funzionamento dello Spanning Tree Protocol attraverso lo schema di una switched LAN disegnato su un foglio.

7

8

9

Ricordare la caratteristica fondamentale di uno switch full duplex e discuterne gli effetti. Il dominio di broadcast e il dominio di collisione: per hub, switch e switch full duplex. Spiegare cos’è e a cosa serve l’autonegoziazione.

10 Illustrare l’utilità dell’impiego di macchine virtuali 10 Discutere

le ragioni per cui una LAN dovrebbe essere organizzata tramite VLAN.

per la gestione delle reti LAN.

11 Fornire 11 Spiegare cosa si intende per porta trunk. 12 Spiegare

in cosa consiste una Virtual Machine

qualche esempio per cui è importante poter fruire della tecnica di Link Aggregation.

12 Dominio di collisione e di broadcast nelle VLAN.

(VM).

13 Descrivere la tecnologia denominata per antono13 Definire e descrivere la nozione di virtual switch. 50

A2

masia VMWare.

Dispositivi e instradamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

ESITI ESERCIZI PER LA VERIFICA SCRITTA Apparati e instradamento

1

Data la seguente switched LAN e la seguente sequenza di traffico, riportare il contenuto della CAM dello Switch-1. 00 00 0c 10 15 13

00 00 0c 10 15 12

F

A

Switch-2

Switch-1 1

1

3

00 00 0c 10 15 11

9

4 4

2

B

3

3

2

E C

D

00 00 0c 10 15 16

6

00 00 0c 10 15 14

00 00 0c 10 15 05

Traffico:

4

5

6

7

1 1

3

Switch-2

3

1

2

Switch-3 3

Dato lo schema dell’esercizio precedente, elencare quali trasmissioni sono realizzate in flooding e quali inoltrate direttamente.

Data la seguente topologia fisica, applicare STP considerando che i MAC address degli Switch-X siano 00:00:00:cc:cc:cX; che le priorità siano tutte di default (32768) e che i costi delle porte siano tutti uguali a 10. 1

Dato lo schema dell’esercizio precedente, riportare il contenuto della CAM dello Switch-2.

Switch-1

Data la seguente switched LAN, individuare i domini di collisione e i domini di broadcast elencando i nomi degli host.

Switch-3

2 2

1

3

2

1

Switch-2 3

1

4

11

2 2

Switch-1

7

3

10

8

Data la seguente topologia fisica, applicare STP considerando che i MAC address degli Switch-X siano 00:00:00:cc:cc:cX; che le priorità siano tutte di default (32768) e che i costi delle porte siano tutti uguali a 10.

0. switch e host avviati 1. F spedisce a E 2. E spedisce a A 3. A spedisce a D 4. D spedisce a C 5. B spedisce a D 6. B spedisce a A

2

2

1

2 2

1

Switch-0

3

8

Data la seguente VLAN (con 3 VLAN-ID), individuare i domini di collisione e i domini di broadcast elencando i nomi degli host.

8 1 9 3

4

5

6

7

10

11

8

4

2

7

3

5

Data la seguente rete, individuare i domini di collisione e i domini di broadcast elencando i nomi degli host.

6 5 4

Esercizi Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

51

9

Data la VLAN dell’esercizio precedente, detti ethX le sue porte con X numerato da sinistra a destra (Host 1 su eth1), configurare il managed switch.

13 Dato lo schema dell’esercizio precedente, elen-

10 Dato lo schema seguente (4 host e 3 switch con

14 Dato lo schema dell’esercizio precedente, ripor-

le CAM inizialmente vuote):

tare il contenuto della CAM dello Switch-2.

a) B spedisce a D. – Quali switch imparano dove si trova B? – A vede il pacchetto? b) D spedisce a B. – Quali switch imparano dove si trova D? – A vede il pacchetto? c) A spedisce a B. – Quali switch imparano dove si trova A? – D vede il pacchetto? d) D spedisce a A. – Quali switch imparano dove si trova D? – C vede il pacchetto? 2

1

tare il contenuto della CAM dello Switch-3.

16 Data la seguente topologia fisica, applicare STP considerando che i MAC address degli Switch-X siano 00:00:00:cc:cc:cX; che le priorità siano tutte di default (32768) e che i costi delle porte siano tutti uguali a 10. 1

2 2

Switch-2

2

3

A

15 Dato lo schema dell’esercizio precedente, ripor-

3

B

1

2

Switch-1

Switch-4 1

1 3

D

11 Dato lo schema e il traffico a), b) c) d) dell’esercizio precedente, determinare il filtering database dei tre switch.

12 Data

la seguente switched LAN e la seguente sequenza di traffico, riportare il contenuto della CAM dello Switch-1. 00 00 0d 10 15 13

00 00 0d 10 15 12

D

A

Switch-2

Switch-1 1

4 4

2

B

00 00 0d 10 15 11

1

3

3

2

E 1

C 00 00 0d 10 15 16

2

F

00 00 0d 10 15 14 3

17 Dato lo schema seguente (4 host e 3 switch con le CAM inizialmente vuote): a) B spedisce a C. – Quali switch imparano dove si trova B? – D vede il pacchetto? b) C spedisce a B. – Quali switch imparano dove si trova C? – D vede il pacchetto? c) D spedisce a A. – Quali switch imparano dove si trova D? – C vede il pacchetto? d) A spedisce a C. – Quali switch imparano dove si trova A? – B vede il pacchetto?

G 1

00 00 0d 10 15 17

2

2

B

1 2

C

1

3

A

Traffico: 0. switch e host avviati 1. F spedisce a E 2. E spedisce a A 3. A spedisce a D 4. D spedisce a C 5. E spedisce a F 6. D spedisce a A

Switch-2

Switch-1

Switch-3

00 00 0d 10 15 05

52

1

2

Switch-0

Switch-3

C

Switch-3

3

2 2

1

Switch-2

Switch-1 1

care quali trasmissioni sono realizzate in flooding e quali inoltrate direttamente.

D 3

Switch-3

18 Dato lo schema e il traffico a), b) c) d) dell’esercizio precedente, determinare il filtering database dei tre switch.

A2

Dispositivi e instradamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

19 Data la seguente VLAN (con 3 VLAN-ID), individuare i domini di collisione e i domini di broadcast elencando i nomi degli host.

2. F spedisce a D 3. D spedisce a F 4. C spedisce a A 5. F spedisce a A 6. B spedisce a E

23 Dato lo schema dell’esercizio precedente, elen1 7 11 2

4

care quali trasmissioni sono realizzate in flooding e quali inoltrate direttamente.

8

3

10 6

24 Dato lo schema dell’esercizio precedente, riportare il contenuto della CAM dello Switch-2.

5

9

4

25 Dato lo schema dell’esercizio precedente, ripor-

20 Data la VLAN dell’esercizio precedente, detti faX le porte dello switch di sinistra, numerate da sinistra a destra (Host 1 su fa1), configurare il managed switch di sinistra, considerando che le due porte trunk siano due Giga Ethernet (Gi/1 e Gi/2).

21 Data la VLAN dell’esercizio precedente, detti faX le porte dello switch di destra numerate da sinistra a destra (Host 7 su fa1 e Host 11 su fa5), configurare il managed switch di destra, considerando che le due porte trunk siano due Giga Ethernet (Gi/1 e Gi/2).

tare il contenuto della CAM dello Switch-3.

26 Dato

lo schema VMWare seguente, composto da 3 virtual machine, 1 virtual switch e un managed switch, elencare i comandi di configurazione se le prime due VM trattano il traffico aziendale e la terza garantisce il collegamento a Internet. Riportare le ipotesi aggiuntive per giustificare le scelte di configurazione.

1

22 Data

2

3

la seguente switched LAN e la seguente sequenza di traffico, riportare il contenuto della CAM dello Switch-1. 00 00 0e 10 15 13

00 00 0e 10 15 12

C

A

Switch-1

Switch-2

1

3 4

2

B

00 00 0e 10 15 11

1

3

1

2

5

D

4

2 3

00 00 0e 10 15 14 1 2

E

3

F

Switch-3

00 00 0e 10 15 05

Traffico: 0. switch e host avviati 1. A spedisce a F

00 00 0e 10 15 17

27 Aggiungere un secondo virtual switch alla configurazione dell’esercizio precedente (rinominando alcune porte all’interno del VMWare), dedicato al servizio di connessione a Internet. Elencare i comandi di configurazione opportuni per soddisfare la richiesta.

Esercizi Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

53

ESITI ESERCIZI PER LA VERIFICA DI LABORATORIO Per compilare gli esercizi proposti è stato usato l’ambiente gratuito multipiattaforma Windows/Linux Code::Blocks 10.5 con gcc 4.4.1 e Eclipse SDK 4.2.0 con jre7. I testi degli esercizi presentano uno o più layout di input/output richiesti; in questo modo sono indicate, a volte, alcune specifiche del programma come l’output, il controllo dell’input o i valori ammissibili.

LCW e stampi a schermo la codifica impulsiva relativa.

Apparati e instradamento

1

Scrivere un programma che acquisisce in input l’attività su uno switch a 8 porte nella forma (n. porta, MAC destinatario, MAC sorgente), quindi ne mostri il procedimento di inoltro e il filtering database. /D\RXW

/D\RXW

287387 6HOH]LRQDUH LO YDORUH DELOLW\  %$6(7  %$6(7 IXOO GXSOH[

287387

 %$6( 7;

7UDI¿FR

 %$6(7; IXOO GXSOH[

3RUWD 

  %$6(7

G   G DI I  V     H EF

 SDXVH

3RUWD 

 DV\PPHWULF SDXVH

G     H E V   I D  G

 

3RUWD 

 

G     H EF V   F I D 

               

3RUWD 

_ _ _ _ _ _ _ ___ _ _ _ _ _ _ _

G II II II II II II V     H EF 3RUWD  G   I D  G V   I   D

3



Scrivere un programma che legge da un file di testo la sequenza di un frame Ethernet e, se di tipo 801.1Q (VLAN), ne mostri a schermo le caratteristiche.

7UDPD U[ VX  ! EURDGFDVW VX       

/D\RXW

3RUWD  /HDUQLQJ H IRUZDUGLQJ

7UDPD U[ VX  ! EURDGFDVW VX        7UDPD U[ VX  !  7UDPD U[ VX  ! EURDGFDVW VX        7UDPD U[ VX  ! 

 FD  G E  F F D  F    

 3  0$&     ( %&

     K

9/$1,'  E

3  0$&   & ) $ 

287387 

3  0$&     ( %& 3  0$&   )   $ Scrivere un programma che consenta all’utente di scegliere il valore del campo ability di un

A2

  F D  IH          )UDPH 4 73,'

3  0$&   ) $  '

54

II II II II II II FD  G E  F        F         

)LOWHULQJ GDWDEDVH

2

287387  )UDPH (WKHUQHW

)UDPH II II     )UDPH

(WKHUQHW II II II II   FH H E            FH H E  F D       F D   QRQ 4

Dispositivi e instradamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

4

Scrivere un programma che legge da un file di testo la sequenza di un frame Ethernet e incapsularla in 802.1Q con VLAN-ID a piacimento. /D\RXW

287387

5

Scrivere un programma che acquisisce in input un numero su 16 bit come LCW, isoli i bit del campo ability e stampi a schermo la sua decodifica. /D\RXW

)UDPH (WKHUQHW

287387

II II II II II II   FH H E    

,QVHULVFL XQ QXPHUR   

         FH H E  F D

 E /&:

        F D  

ELW  %$6(7; IXOO GXSOH[ ELW  DV\PPHWULF SDXVH

,QFDSVXODWR LQ 4 FRQ 9/$1,'  II II II II II II   FH H E                  FH H E  F D         F D  

Esercizi Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

55

A3

Tecnologia IEEE 802.11

Le reti LAN senza fili (WLAN, Wireless LAN) si impongono come modello laddove la connessione guidata via cavo è impossibilitata o costosa o inutilizzabile come nel caso di postazioni mobili. Molto spesso le WLAN si integrano a LAN su cavo preesistenti (wired LAN), spesso di tipo Ethernet 802.3, per consentire a determinate stazioni di connettersi a una rete cablata classica. Lo standard IEEE che si occupa delle specifiche per le reti Wireless LAN è l’IEEE 802.11*. Nel 1999 l’azienda statunitense Interbrand Inc. ha coniato il termine Wi-Fi (si può anche tradurre in Wireless Fidelity) che spesso è usato come sinonimo di WLAN 802.11 (anche in questo testo). Ad oggi (2012) lo standard 802.11* si è evoluto fino alla versione 802.11n, anche se i vari standard nel tempo sono sostanzialmente considerati interoperabili. In sintesi:

Wi-Fi e ISM La banda ISM (Industrial, Scientific and Medical) è una porzione dello spettro elettromagnetico che, sia a livello nazionale che internazionale (anche se con qualche differenza) viene riconosciuto come disponibile liberamente e gratuitamente (anche se solo all’interno di aree private). Altri tipi di frequenze, invece, sono ristrette da norme severe e rilasciate solo a pagamento. Siccome è intrinsecamente impossibile confinare una trasmissione radio all’interno di una precisa area privata, le normative nazionali tendono a liberalizzare l’uso del Wi-Fi a prescindere da questa limitazione.

56

Standard

Anno



1997

Frequenza (GHz) 2,4

Bit rate (Mbit/s)  

D

1999

5,2; 5,4; 5,8

       

E

1999

2,4

   

J

2003

2,4

D    

Q

2009

2,4; 5,4

J   

La comunicazione wireless Wi-Fi avviene in frequenza radio all’interno della banda di frequenze denominata ISM (Industrial, Scientific and Medical) che ogni paese riserva ad applicazioni di radiocomunicazioni non commerciali, ma per uso industriale, scientifico e medico. Wi-Fi può usare antenne omnidirezionali o direttive. Le antenne omnidirezionali sono utilizzate per distribuire la connettività in aree private, relativamente poco estese come aziende private ma anche sottoforma di hotspot pubblici (esempio, alberghi, aeroporti, uffici pubblici, ecc.) che attraverso una connessione Wi-Fi spesso offrono un accesso a WAN Internet. Siccome la comunicazione avviene tramite onde radio, essa può essere messa in crisi da particolari condizioni (ostacoli come alberi, pilastri, muri di edifici), cosicché la portata dei dispositivi Wi-Fi non sempre rispetta i valori promessi, che sono circa 30 m per ambienti interni e circa 100 m per ambienti esterni. Le antenne direttive sono in genere utilizzate per connettività più estese e sono poste in luoghi strategici per superare le barriere fisiche ambientali.

A3

Tecnologia IEEE 802.11

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

Come tutti i dispositivi che operano su frequenze radio, anche la tecnologia Wi-Fi genera smog elettromagnetico potenzialmente pericoloso per la salute. Bisogna ricordare però che la potenza degli apparati più diffusi è inferiore a quella emanata da un telefono cellulare.

1

Modelli e terminologia

Le reti 802.11 possono presentarsi in due configurazioni differenti, tra loro trasparenti e conviventi: modello ad-hoc, in cui le stazioni sono paritarie, e modello infrastructured, in cui un apparato dedicato coordina il traffico delle stazioni ed è collegato ad una LAN. In generale le singole stazioni operanti in Wi-Fi sono denominate STA, e sono dotate di un modulo di ricestrasmissione denominato WT (Wireless Terminal). Organizzare moduli wireless in configurazione ad-hoc è la soluzione ideale per connettvità temporanea tipo conferenze, sale riunioni, attività di gruppo all’aperto, ecc. La modalità non richiede particolari configurazioni. È studiata dal gruppo di lavoro IETF denominato MANET (Mobile Ad hoc NETworks) e in questo testo non sarà trattata. IBSS

Wi-Fi ad-hoc WT

WT

STA

WT

STA STA

WT

WT

STA

STA

WT STA

La modalità infrastruttura (infrastructured) è invece indicata per aggregare su una LAN preesistente e cablata (distribution system) uno o più gruppi di stazioni (BSS, Basic Service Set) attraverso un dispositivo dedicato denominato Access Point (AP). Un insieme di BSS che si attestano sullo stesso distribution system è detto ESS (Extended Service Set). Wi-Fi infrastructured distribution system

AP

AP BSS

BSS

WT

WT WT STA

WT

WT WT

STA

STA

STA

STA

STA ESS

1

Modelli e terminologia

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

57

Quasi tutti gli Access Point commerciali possono essere configurati per operare in quattro modalità differenti. Quando si utilizza l’AP con un’unica BSS, tipico delle utenze residenziali, si dice modalità root (che è quella di fabbrica). Se l’AP deve coordinarsi con altri AP per costituire una ESS, allora va configurato in modalità bridge. Se invece lo si volesse usare come ripetitore di segnale per un altro AP, lo si può configurare in modalità repeater. Infine, anche se misconosciuta, la modalità client consente di trasformare un AP in un modulo WT per una stazione sprovvista di modulo Wi-Fi. In questo caso l’AP va connesso con un cavo Ethernet alla stazione che intende utilizzarlo come modulo WT.

2

MAC di IEEE 802.11

Wi-Fi è strutturalmente half duplex perché un dispositivo o trasmette o riceve. Il mezzo trasmissivo è denominato etere, e si può considerarlo condiviso esattamente come per Ethernet, ma in questo caso non è possibile rilevare le collisioni mentre si trasmette, come invece opera CSMA/CD. Anche se un dispositivo wireless prima di trasmettere può stabilire se l’etere è impegnato, durante la trasmissione non è in grado di stabilire se altri dispositivi stanno a loro volta trasmettendo (collisione).

2.1

Stazione nascosta e stazione esposta

La modalità half duplex di Wi-Fi si può tradurre nel principio che, data la singola cella di portata radio di un dispositivo, è necessario che la stazione riceva da un solo trasmettitore alla volta. Questo comporta che possono presentarsi due problemi tipici delle comunicazioni radio half duplex, che impediscono del tutto di tentare un approccio con rilevamento di collisioni:



   A B C

?

    A B C D 58

Stazione nascosta In questo caso B sta ricevendo da C. A vede il canale libero perché il segnale di C non gli arriva (C è fuori dalla cella di A), quindi trasmette, ma viola il principio (nella sua cella c’è una ricezione in corso). Stazione esposta In questo caso D sta ricevendo da C. B vuole trasmettere ad A, ma non può farlo perché rileva una trasmissione nella sua cella e non sapendo dove si trovano D e A, non può rischiare. Però B avrebbe potuto trasmettere ad A, perché non è violato il principio (nessuna stazione sta ricevendo nella sua cella).

A3

Tecnologia IEEE 802.11

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

I due problemi suddetti vengono superati introducendo una breve fase di negoziazione, da effettuarsi prima di una qualsiasi trasmissione, tramite un protocollo RTS/CTS (Request To Send/Clear To Send). In pratica il trasmettitore invita il ricevente (con un pacchetto RTS contenente l’indirizzo MAC del destinatario) a emettere un pacchetto (CTS), così che tutti i vicini del ricevente possano rendersi conto del tentativo di trasmissione in atto. Qualunque stazione riceva un CTS viene a conoscenza del fatto che una ricezione sarà in corso nella propria cella. Sarà così in grado di evitare di trasmettere, come nel caso della stazione nascosta: infatti A ha ricevuto il CTS di B. Oppure potrà trasmettere, se necessario, come nel caso della stazione esposta: infatti B non ha ricevuto il CTS di D.

2.2

CSMA/CA

In Wi-Fi, non potendo rilevare le collisioni, si cerca di evitarle adottando il protocollo CSMA/CA (acronimo inglese di Carrier Sense Multiple Access with collision avoidance). Per ottenere lo scopo il CSMA/CA usa la negoziazione RTS/CTS contenente il NAV (Network Allocation Vector): il pacchetto RTS, oltre all’indirizzo MAC del destinatario, contiene questo valore che indica la durata, in tempo, della trasmissione che si intende attuare. Anche il CTS di risposta contiene lo stesso NAV, in modo tale che qualsiasi stazione che riceve l’RTS o il CTS e non è coinvolta in questa sessione, possa impostare il valore di NAV in un proprio registro interno; questo valore verrà decrementato dalle stazioni in base al trascorrere del tempo, cosicché se una stazione ha il NAV diverso da zero, sa che è in atto una trasmissione nella sua cella. Questa condizione realizza un Carrier Sense virtuale: una stazione che vuole trasmettere sa che non può farlo se ha il NAV diverso da zero. Dotato di Carrier Sense reale (rilevazione se l’etere è in idle, cioè libero) e del Carrier Sense virtuale (se il NAV è uguale a zero), una stazione può attuare il CSMA/CA: • Carrier Sense. La stazione trasmittente cerca di determinare lo stato del mezzo valutando il contenuto di NAV ed ascoltando il mezzo. Il canale è considerato libero, quando sia il carrier sensing virtuale sia quello reale non rilevano attività. • Backoff. Il trasmettitore attende che un proprio contatore interno di backoff vada a 0. Il contatore inizialmente parte da 7 e si decrementa nel tempo solo se il canale rimane libero. Se il canale viene occupato, il contatore rimane al valore che ha raggiunto, ma la stazione ritorna al Carrier Sense. • Carrier Sense virtuale. La stazione emette un RTS. Se entro un intervallo di tempo ben definito (timeout), la stazione non riceve il CTS, deduce che c’è stata collisione. Allora riparte dal backoff, ma il valore iniziale del

2

MAC di IEEE 802.11

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

59

contatore di backoff verrà raddoppiato (esempio, varrà 15). Se invece il CTS viene ricevuto, il trasmettitore spedisce il pacchetto. • Data transmission. Se entro un intervallo di tempo dopo aver spedito il pacchetto (timeout), il trasmettitore non riceve un riscontro dal ricevente (ACK), la procedura viene ripetura da capo, e il contatore di backoff raddoppiato. Il CSMA/CA di una trasmissione regolare dalla stazione A alla stazione B, con le stazioni C e D nelle vicinanze, può essere schematizzato dalla figura: CSMA/CA semplificato tempo

A B

RTS

frame

NAV (RTS)

C

NAV (CTS)

D

SSID Il SSID (Service Set IDentifier) è, in effetti, la stringa che identifica un Access Point quando l’utente ricerca la lista dei dispositivi Wi-Fi in una certa area. Anche se generalmente un SSID specifica un Access Point, in effetti non è esattamente identificabile con un solo e determinato AP, dato che è normale che in una ESS vi siano più AP con lo stesso SSID o che un singolo AP possa possedere più di un SSID.

ACK

CTS

Quando C e D ricevono RTS e CTS, impostano il proprio NAV: ora sanno che il canale sarà occupato, e per quanto tempo. Si nota che la stazione C è nella cella di A (riceve l’RTS), mentre D no. A sua volta D è nella cella di B (riceve il CTS). Un tipico inconveniente del CSMA/CA avviene durante la fase di trasmissione del pacchetto: la collisione viene rilevata solo dopo averlo spedito interamente e aver atteso invano l’ACK: più il pacchetto è grande, più tempo viene perso nel rilevare la collisione. Per questo motivo il MAC di 802.3 frammenta i pacchetti lunghi e li ricompatta in ricezione. Purtroppo il CSMA/CA così descritto comporta numerose collisioni proprio sul pacchetto RTS (e CTS): pur «funzionando», il protocollo impone numerose fasi di backoff ripetute e/o numerose scadenze di timeout nella fase di Carrier Sense virtuale che fanno attendere inutilmente la stazione che deve trasmettere. Per superare questo problema le stazioni si sincronizzano utilizzando un tempo base denominato slot time e suoi derivati: SIFS (@V]%LQDU\ V]0VJ  UHWXUQ 



A3

Tecnologia IEEE 802.11

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

PROGRAMMA



                   

` FKDU 'HFWRV]%LQ LQW TXDOH LQW FRQWHQLWRUH FKDU V]ELQDU\ ^ XQVLJQHG LQW PDVN LQW L PDVN PDVN

   FRQWHQLWRUH 

L  ZKLOH PDVN ^ LI TXDOH PDVN V]ELQDU\>L@ PDVN PDVN !!  L ` V]ELQDU\>L@  UHWXUQ V]ELQDU\

  HOVH V]ELQDU\>L@

 

`

Dopo aver definito le maschere di bit e i valori da confrontare (righe 3÷10), si analizza il primo byte del pacchetto che è anche il primo byte del campo Frame Control. Su questo valore si eseguono i controlli per determinare il Type (righe 24, 35 e 36) quindi, se si tratta di un frame di controllo, si eseguono i test per determinare il Subtype (righe 27, 31 e 32). Il programma fa uso della funzione DectoszBin() per stampare il formato binario dell’intero Frame Control su 16 bit.

I pacchetti di gestione hanno l’intestazione in comune e sono distinti in base al valore della coppia di campi Type/Subtype del Frame Control. Il più importante pacchetto di management è il beacon, che è «marchiato» con la sequenza 00/1000 nella coppia Type/Subtype: frame beacon 802.11 intestazione

FC Dur. 2 2

DA 6

SA 6

dati

BS SID 6

seq 2

frame body 0÷2306

coda

FCS 4

0 1 2 3 4 5 6 7 8 9 101112131415

1 0 0 0 0 0 subtype type

time stamp BI C SSID

Almeno nella modalità infrastruttura, il campo DA (Destination Address) contiene l’indirizzo MAC di broadcast ff-ff-ff-ff-ff-ff che impone a tutte le stazioni nel BSS di trattenere il pacchetto. Si nota che nel campo dati il beacon trasporta il timestamp (per sincronizzare le stazioni) e il SSID, di lunghezza variabile ma entro i 32 caratteri Ascii per annunciarsi alle stazioni.

4

Il pacchetto MAC

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

65

ESEMPIO

Frame 802.11 Data la seguente trama 802.11 in esadecimale, decodificarne il contenuto:   II  

  II  

  H      F   E   I  F F   II II II II  F   E  E   I  I G E           H  

D    

  F  

Prima di tutto si individua e si salta l’header del radiotap, per raggiungere il pacchetto 802.11. La lunghezza del radiotap header si trova nel terzo e quarto byte, in little endian, ovvero LE(K K) = 0018h = 24. Il 25mo e 26mo byte sono quindi il Frame Control: (K K), che in binario valgono 10000000b e 00000000b. Si nota che i quattro bit MSB del primo byte (Subtype) valgono 1000b e i due successivi (Type) valgono 00b: il pacchetto è un beacon. Si nota anche che la circolazione è dedicata ad una rete ad-hoc, essendo la coppia ToDS/ FromDS uguale a 00b. Il campo successivo, Duration, su due byte, (00h 00h) vale 0: i NAV non saranno impostati.

66

A3

L’indirizzo di destinazione DA è, come spesso succede per i pacchetti beacon, un indirizzo MAC di broadcast (IIK IIK IIK IIK IIK IIK), mentre l’indirizzo mittente SA è l’indirizzo MAC dell’Access Point (K FK K K EK K). In particolare l’OUI 00:0C:41 appartiene a Cisco Inc. I sei byte successivi sono il BSSID, e coincidono con l’indirizzo MAC dell’Access Point. Dopo il campo BSSID si trovano i due byte del numero di sequenza dei pacchetti Wi-Fi, (50h f8h). Il valore va letto in little endian, ovvero LE(50h f8h) = f850h in cui i 12 bit MSB sono il numero di sequenza f85h = 3973, mentre i restanti 4 bit sono il numero di frammento 0h=0. Ora comincia il frame body del beacon. Il primo campo Timestamp è rappresentato su 8 byte: (89h f1h d4h 1bh 01h 00h 00h 00h). Va interpretato il little endian, ovvero LE(89h f1h d4h 1bh 01h 00h 00h 00h) = 000000011bd4f189h = 4761907593 microsecondi. Infine, saltando i 4 byte per il BI (Beacon Interval) e C (Capabilities), abbiamo il SSID: il secondo byte del campo SSID indica la lunghezza della stringa (K)=7 caratteri, ovvero (K K K K HK K K) = Itis.PR.

Tecnologia IEEE 802.11

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

ESITI ESERCIZI PER LA VERIFICA ORALE Saper rispondere ai requisiti fondamentali dà una sufficiente garanzia per sentirsi pronti all’interrogazione. Saper anche rispondere ai requisiti avanzati dimostra una padronanza eccellente degli argomenti del capitolo.

Requisiti fondamentali

Requisiti avanzati

1

Definire la locuzione «banda ISM» e indicare le portate classiche dei dispositivi Wi-Fi.

1

Commentare le terminologie IBSS, ESS e BSS per le reti Wi-Fi.

2

Ricordare l’ordine di grandezza del bitrate di una rete Wi-Fi e i principali standard IEEE.

2

Ricordare le quattro configurazioni base per un Access Point.

3

Riportare le due configurazioni tipiche per una rete Wi-Fi ed elencare la terminologia dei componenti coinvolti.

3

Illustrare il problema della stazione nascosta.

4

Illustrare il problema della stazione esposta.

4

Spiegare cosa comporta che una rete Wi-Fi sia di tipo infrastructured.

5

Descrivere il meccanismo RTS/CTS e il carrier sense virtuale.

5

Indicare il nome del MAC di 802.11.

6

Spiegare perché è bene che il MAC di 802.11 frammenti i pacchetti troppo ampi.

6

Ricordare la modalità trasmissiva strutturale di Wi-Fi e spiegare la differenza con la modalità di Ethernet.

7

Elencare e commentare le fasi di accesso ad una rete Wi-Fi da parte di una stazione STA.

7

Illustrare la funzione del NAV nella comunicazione Wi-Fi.

8

Descrivere il radiotap header e la sua funzione.

8

Spiegare la funzione dell’Access Point nella modalità Wi-Fi infrastruttura.

9

Spiegare la funzione del campo ToDS/FromDS del campo Frame Control di 802.11.

9

Descrivere il SSID.

10 Elencare e commentare i tre pacchetti di controllo circolanti in Wi-Fi.

10 Definire e commentare la nozione di roaming. 11 Spiegare per quale motivo il pacchetto di beacon 11 Elencare

e commentare le tre tipologie di pacchetti circolanti in una rete Wi-Fi.

deve essere di broadcast.

12 Descrivere 12 Illustrare la funzione del pacchetto di beacon. 13 Disegnare su un foglio lo schema di una rete WiFi con una BSS e commentare la trasmissione da una STA a un’altra STA e da una STA a un nodo della rete infrastruttura.

il processo di autenticazione di una stazione su un Access Point.

13 Disegnare

su un foglio lo schema di una rete Wi-Fi con due BSS (due AP) una stazione fissa sull’infrastruttura e due stazioni mobili, una su ogni BSS. Mostrare le sei circolazioni possibili.

Esercizi Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

67

A4

Spedire e leggere su LAN: pcap

Con pcap (packet capture) si denomina una serie di funzioni raccolte in una API (Application Programming Interface) per leggere, analizzare e studiare il traffico di una rete. In pratica si tratta di uno strumento software sottoforma di libreria per scrivere programmi di sniffing. In particolare, pcap è realizzato su sistemi Unix-like in una libreria denominata libpcap, mentre su sistemi Windows è disponibile un «porting» della stessa, denominata WinPcap. Queste due librerie Open Source, pur operanti su sistemi operativi differenti, offrono la stessa interfaccia per il codice che intende utilizzarle. Sia libpcap che WinPcap sono scritte in linguaggio C, cosicché altri linguaggi come Java e i linguaggi della famiglia .NET possono utilizzarle tramite uno strato software intermedio «adattatore» (wrapper). Applicando il wrapper, se il linguaggio utilizzato per scrivere i programmi con libpcap/WinPcap è a sua volta portabile, si ottengono applicazioni multipiattaforma a livello di codice sorgente: spostando il codice del progetto sorgente da una piattaforma all’altra e utilizzando di volta in volta la libreria relativa, la ricompilazione del progetto dà origine alla stessa applicazione senza dovere modificare il codice del programma. Per esempio, è quello che succede se si utilizza il linguaggio Java e, seppur relativamente, anche il linguaggio C. La libreria WinPcap, nata verso la fine degli anni ’90 in Italia come oggetto di una tesi universitaria, ebbe un successo inaspettato a livello mondiale. La libreria diede origine alle applicazioni di analisi di rete più diffuse e famose al mondo, WinDump e Ethereal (oggi denominato Wireshark), entrambe dipendenti dalla libreria libcap/WinPcap. La struttura di queste librerie è un ottimo esempio di stratificazione del software, in cui ogni strato uniforma le funzioni dello strato inferiore per fornire un servizio generale allo strato superiore: applicazione (C)

(Java) wrapper linguaggio

Sistema Operativo (user mode)

wrapper pcap wrapper versioni Sistema Operativo

libreria libcap/WinPcap

driver libcap/WinPcap

Sistema Operativo (kernel mode)

driver NIC hardware (rete fisica)

A4

Spedire e leggere su LAN: pcap

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

69

Il driver NIC è fornito dal sistema operativo, e opera in kernel mode. È il software che legge e scrive i pacchetti sulla scheda di rete (interfaccia fisica o NIC). Per Windows è noto come driver NDIS. La libreria libpcap/WinPcap aggiunge un driver che comunica con questo per intercettare i pacchetti letti o scritti da e per l’interfaccia di rete. Il driver sarà di un formato tipico Linux se operante per sistemi Unix-like; di tipo sys per sistemi Windows. Questo è il primo strato della libreria: rendere disponibile al livello superiore il traffico reale dei pacchetti. Per WinPcap il nome del driver è npf.sys. Il secondo livello della libreria ha il compito di uniformare le chiamate per le diverse versioni del medesimo sistema operativo. Per esempio le varie distribuzioni Linux (che potrebbero avere driver di rete leggermente diversi) o le versioni Windows tipo XP, 2003/2008, Seven (che hanno driver di rete differenti). Per WinPcap il nome della libreria è packet.dll. Infine il terzo livello della libreria ha il compito di fornire una interfaccia comune per le applicazioni, conforme al progetto originale BPF (Berkeley Packet Filter, 1993) denominato appunto pcap. Per WinPcap il nome della libreria è wpcap.dll. Come si vede nella figura precedente, siccome il terzo livello (pcap) si offre alle applicazioni in linguaggio C, ogni linguaggio differente dal C deve fornire un ulteriore wrapper per «trasportare» quelle stesse chiamate alla propria sintassi. Le librerie pcap (libpcap/WinPcap) lavorano in modo promiscuo: ricevono e spediscono pacchetti con qualsiasi indirizzo MAC. In ricezione leggono tutto il traffico sul mezzo, non solo quello destinato alla scheda di rete su cui stanno operando; in spedizione possono scrivere pacchetti con indirizzo MAC sorgente diverso da quello della scheda su cui operano. Per scrivere un programma che spedisce e riceve pacchetti su rete LAN è quindi necessario installare la libreria libpcap/WinPcap sul sistema operativo, rispettivamente Linux o Windows. Allo stesso modo, una volta installata la libreria, sarà anche possibile utilizzare il programma tcpdump/WinDump rispettivamente per Linux e Windows e il programma Wireshark (in questo caso ha lo stesso nome su entrambi i sistemi operativi). L’installazione delle librerie nei rispettivi sistemi operativi è immediata e non serve configurare nessun altro elemento del sistema. Le librerie sono per poco o per nulla invasive, pertanto se ne consiglia l’installazione (vedi Appendice. Installazione libpcap/WinPcap per Linux e Windows).

1

tcpdump/WinDump

Questo programma è un analizzatore di pacchetti (packet sniffer) a linea di comando, operante allo stesso modo su Linux e Windows nelle rispettive versioni (tcpdump e WinDump). Non ha bisogno di installazione ed è costituito da un solo file eseguibile. Naturalmente il funzionamento di tcpdump/WinDump dipende dalla preventiva installazione sul sistema della libreria libpcap/WinPcap. Per gli scopi di questo testo servono solo due comandi del programma: 70

A4

Spedire e leggere su LAN: pcap

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

il comando per numerare le interfacce fisiche sulla macchina che si sta utilizzando e il comando per leggere i pacchetti circolanti:

L’enumerazione sul personal computer dell’esempio conta 3 interfacce fisiche, tra le quali si può notare la NIC per la rete Ethernet cablata, la numero 3. Ora si può usare il comando per catturare il traffico su questa interfaccia, con l’opzione L . Per interrompere la cattura dei pacchetti, premere Ctrl-c. Per evitare di dover catturare qualsiasi pacchetto circolante, è possibile specificare un filtro, tra doppie virgolette, come ultimo parametro. Per esempio ®HWKHU KRVW FDEH¯ impone di leggere solo i pacchetti provenienti dalla scheda con indirizzo 5c:26:0a:29:be:34; oppure, specificando il filtro DUS, verranno catturate solo le trame Ethernet che trasportano l’Ethertype 0806h di ARP. Il comando funziona anche con la redirezione dell’output, con la sintassi ! QRPH¿OH al termine del comando. Molto utile l’opzione ±Z >QRPH¿OH@FDS, che invece di mostrare l’output sullo schermo, salva su disco il file >QRPH¿OH@FDS, il formato proprietario di Wireshark, affinché possa essere letto e decodificato nella sua interezza.

2

Spedire un pacchetto sulla LAN (Win32)

Sotto il sistema operativo Windows è possibile scrivere un programma C per Win32 che spedisca pacchetti utente direttamente su LAN Ethernet

2

Spedire un pacchetto sulla LAN (Win32)

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

71

utilizzando la libreria WinPcap installata e usando l’SDK Open Source denominato WpdPack fornito gratuitamente (cfr. Appendice. Installazione libpcap/WinPcap per Linux e Windows). In questo caso sarà scritto un progetto per l’ambiente di sviluppo gratuito cross-platform Code::Blocks 10.5 corredato da compilatore gcc per Win32. L’SDK WpdPack non si installa, basta copiarlo in una cartella qualsiasi del disco. È costituito da due directory fondamentali, Include e Lib. La prima contiene i file di intestazione .h (header), necessari per compilare le due librerie statiche presenti nella cartella Lib, le citate wpcap.lib e packet. lib. Le due librerie sono fornite anche in formato gcc, con i file libwpcap.a e libpacket.a. Ora si crea un progetto con Code::Blocks di tipo Console Application, esempio sendeth.cbp. Per comodità si ipotizza che la cartella del progetto sendeth sia stata creata in base al seguente schema:

VHQGHWKFES

Per consentire di compilare e linkare le librerie statiche che accederanno al driver npf.sys, il progetto va configurato così: 1) Avviato Code::Blocks e caricato il progetto, selezionarlo nella finestra Management, quindi agire sul menu: Project-Build options-Search directories-Compiler-Add, e digitare: ..\..\..\Include. In questo modo il compilatore cercherà i file di intestazione aggiuntivi proprio nella cartella Include dell’SDK WpdPack (osservare lo schema). 2) Agire di nuovo sul menu: Project-Build options-Search directories-Linker-Add, e digitare: ..\..\..\Lib. In questo modo il linker cercherà le librerie aggiuntive proprio nella cartella Lib dell’SDK WpdPack (osservare lo schema). 3) Agire di nuovo sul menu: Project-Build options-Linker settings-Add, e digitare: wpcap. In questo modo il compilatore cercherà le funzioni invocate nel codice sorgente anche all’interno di questa libreria. Non è necessario fornire il percorso della libreria dato che è già stato fornito nei passi precedenti. 72

A4

Spedire e leggere su LAN: pcap

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

PROGRAMMA

Spedire un frame su Ethernet (Win32) Scrivere un programma in linguaggio C per Win32 che spedisce un pacchetto Ethernet su una interfaccia di rete verso un destinatario qualsiasi. Il codice prima enumera le interfacce fisiche presenti sul personal computer (righe 20÷39) e consente la scelta di una di esse. Quindi attraverso il nome del driver corrispondente (alla scheda selezionata) lo apre, crea i 12 byte degli indirizzi MAC destinazione e sorgente, crea un vettore di dati (praticamente a caso, il pacchetto) e spedisce la trama. Affinché Code::Blocks possa compilare il seguente codice Win32 per Windows è necessario importare, oltre alle librerie di WinPcap, la libreria di sistema iphlpapi (per l’API GetAdaptersInfo()): dal menu di Code::Blocks (Project-Build options-Linker settings-Add), digitare iphlpapi. 287387 1,&  'ULYHU DOOD UHWH /$1 %OXHWRRWK  0LQLSRUW 1RPH ?'HYLFH?13)B^)($%$$$('` 1,&  'HOO :LUHOHVV  :/$1 0LQL&DUG 1RPH ?'HYLFH?13)B^)&(&('()&($)` 1,&  ,QWHO 5 /0 *LJDELW 1HWZRUN &RQQHFWLRQ 1RPH ?'HYLFH?13)B^&(&'$)%'&&&('(` 6FHJOLHUH XQD LQWHUIDFFLD  Il codice potrebbe essere (in evidenza gli elementi della libreria WinPcap):                                    

LQFOXGH LQFOXGH LQFOXGH LQFOXGH

ZLQGRZVK! FRQLRK! LSKOSDSLK! SFDSK!

GH¿QH 1801,&  GH¿QH ',01,& 

 SHU JHWFKH  SHU *HW$GDSWHUV,QIR  SHU OD OLEUHULD :LQ3FDS

 TXDQWH VFKHGH 1,& SRVVLELOL  Q FDUDWWHUL SHU LO QRPH GHO GULYHU

,QW PDLQ YRLG ^ ,3B$'$37(5B,1)2 $GDSWHU,QIR>1801,&@ ,3B$'$37(5B,1)2 S$GDSWHU,QIR ':25' GZ FKDU DV]1RPH>1801,&@  QRPL GHL GULYHU GL VFKHGD LQW LM FKDU FK FKDU HUUEXI>3&$3B(55%8)B6,=(@ SFDSBW IS XBFKDU SNW>@ GZ VL]HRI $GDSWHU,QIR  LI *HW$GDSWHUV,QIR $GDSWHU,QIR GZ  12B(5525 UHWXUQ  -  S$GDSWHU,QIR $GDSWHU,QIR ZKLOH S$GDSWHU,QIR ^ LI S$GDSWHU,QIR!7\SH 0,%B,)B7M@ FKDU PDOORF ',01,&  VSULQWI DV]1RPH>M@??'HYLFH??13)BVS$GDSWHU,QIR!$GDSWHU1DPH  SULQWI ?Q1,& G V?Q1RPH V?QM S$GDSWHU,QIR!'HVFULSWLRQ DV]1RPH>M@  M ` S$GDSWHU,QIR S$GDSWHU,QIR!1H[W  LO SURVVLPR `

2

Spedire un pacchetto sulla LAN (Win32)

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica



73

PROGRAMMA



                                   `

SULQWI ?Q6FHJOLHUH XQD LQWHUIDFFLD   FK JHWFKH  LI FK   !M UHWXUQ  M FK    LQGLFH GHOO¶LQWHUIDFFLD VHOH]LRQDWD SFDSBRSHQBOLYH DV]1RPH>M@  DSHUWXUD GHOO¶LQWHUIDFFLD GL UHWH LI IS   GLPHQVLRQH GHO SDFFKHWWR GD FDWWXUDUH QRQ VHUYH   LPSRVWD]LRQH GHO PRGR SURPLVFXR   WLPHRXW GL OHWWXUD QRQ VHUYH HUUEXI  VWULQJD SHU HYHQWXDOH HUURUH 18// ^ ISULQWI VWGHUU?Q,PSRVVLELOH DSULUH O¶LQWHUIDFFLD V ?Q DV]1RPH>M@  UHWXUQ  `  ,QGLUL]]R 0$& GHVWLQD]LRQH SNW>@ [ SNW>@ [ SNW>@ [ SNW>@ [ SNW>@ [ SNW>@ [  ,QGLUL]]R 0$& PLWWHQWH SNW>@ [ SNW>@ [ SNW>@ [ SNW>@ [ SNW>@ [ SNW>@ [  SDFFKHWWR GD  E\WH SUDWLFDPHQWH FDVXDOH IRU L  L L ^ SNW>L@ XBFKDU L `  6SHGL]LRQH GHO SDFFKHWWR VXOO¶LQWHUIDFFLD VSHFL¿FDWD LI SFDSBVHQGSDFNHW IS SNW    ^ ISULQWI VWGHUU?Q(UURUH GL VSHGL]LRQH V?Q SFDSBJHWHUU IS  UHWXUQ  ` SFDSBFORVH IS  UHWXUQ 

Si noti l’impostazione del driver in modo promiscuo (riga 44). Questo consente di spedire un pacchetto con indirizzi MAC destinazione e sorgente a proprio piacimento. In questo codice si sono scelti, rispettivamente 01: 01: 01: 01: 01: 01 e 02: 02: 02: 02: 02: 02. In questo modo per attendere il pacchetto su un’altra macchina, basterà usare WinDump con un filtro sul mittente pari a 02: 02: 02: 02: 02: 02, evitando così di visualizzare decine di pacchetti circolanti. Avviata una sessione di WinDump su una macchina qualsiasi sulla stessa LAN (ma nello stesso dominio di broadcast), si potrà verificare la ricezione del pacchetto:



74

A4

Spedire e leggere su LAN: pcap

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

PROGRAMMA



Dopo aver elencato le interfacce sulla macchina prescelta per attendere il pacchetto (con il comando :LQ'XPS ±'), si stabilisce che l’interfaccia su cui esso arriverà è la 3. Ora si può ordinare al programma di attendere i pacchetti circolanti su questa interfaccia, usando un filtro sul mittente per evitare di catturare anche altri pacchetti. Dato che l’indirizzo MAC sorgente del frame spedito è 02: 02: 02: 02: 02: 02, il comando risulta essere: :LQ'XPS L  Q H HWKHU KRVW  Nel pacchetto ricevuto si notano i due indirizzi MAC mittente e destinatario e l’Ethertype «casuale» e non riconosciuto 0c0dh, quindi i successivi 100-12-2 = 86 byte del pacchetto spedito dal programma.

3

Spedire un pacchetto sulla LAN (Java)

Con Eclipse SDK è possibile scrivere un programma Java che spedisca pacchetti utente direttamente su LAN Ethernet utilizzando i driver fisici (esempio, npf.sys per Win32). In questo caso sarà necessario aggiungere al progetto il wrapper delle librerie libpcap/WinPcap, denominato jNetPcap API, scaricabile dalla pagina www.jnetpcap.com sotto licenza Lgpl. Per l’installazione del wrapper libpcap/WinPcap decomprimere il file compresso scaricato in una cartella a scelta. Va quindi creata una libreria utente che conterrà il wrapper affinché un progetto possa utilizzarlo. La seguente procedura è valida sia per Windows che per Linux (jNetPcap è multipiattaforma). I passi per Eclipse: 1) Creazione libreria che conterrà il wrapper. menu Window-Preferences-Java-Build Path-User Libraries-New e assegnare un nome (esempio, Jnetpcap, come il nome del wrapper). Ora si inserisce nella libreria il wrapper agendo su Add External JARs, selezionando il file jnetpcap.jar che si trova nella directory decompressa in precedenza. Espandere il ramo e cliccare su Native Library-Edit, selezionare la cartella radice del wrapper. Ora Eclipse ha configurato il wrapper e un progetto potrà utilizzarlo con il relativo import org.jnetpcap.Pcap; e import org.jnetpcap.PcapIf; 2) Impostare il wrapper per un progetto. Per inserire la libreria in un progetto Java, durante l’impostazione delle librerie di progetto includere anche la libreria utente: Add Library-User library, indicando il nome deciso al passo precedente. Se si intende usare jNetPcap in un solo progetto, è sufficiente aggiungere il file jnetpcap.jar (contenuto nel file compresso scaricato dal sito) nel project build path del progetto. Dopo aver selezionato Project-Propertiers-Java Build Path-Configure Build Path si deve aggiungere il file jar come Add External JARs. Impostare quindi la library location del file jar come Native library location.

3

Spedire un pacchetto sulla LAN (Java)

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

75

PROGRAMMA

Spedire un frame su Ethernet (Java) Scrivere un programma in linguaggio Java che spedisce un pacchetto Ethernet su una interfaccia di rete verso un destinatario qualsiasi. Il codice prima enumera le interfacce fisiche presenti sul personal computer (righe 20÷39) e consente la scelta di una di esse. Quindi la apre, crea i 12 byte degli indirizzi MAC destinazione e sorgente, crea un vettore di dati (praticamente a caso, il pacchetto) e spedisce la trama. 287387 1,&  ,QWHO 5 /0 *LJDELW 1HWZRUN &RQQHFWLRQ 1RPH ?'HYLFH?13)B^'%(&)%')%$%&'(('` 1,&  0LFURVRIW 1RPH ?'HYLFH?13)B^&%&$($&%&%)$` 1,&  0LFURVRIW 1RPH ?'HYLFH?13)B^($(%'%()%'%(` 6FHJOLHUH XQD LQWHUIDFFLD  Il codice potrebbe essere (in evidenza gli elementi della libreria WinPcap):                                       

76

SDFNDJH RUJMQHWSFDSH[DPSOHV LPSRUW LPSRUW LPSRUW LPSRUW LPSRUW LPSRUW

MDYDLR  MDYDXWLO6FDQQHU MDYDQLR%\WH%XIIHU MDYDXWLO$UUD\/LVW MDYDXWLO$UUD\V MDYDXWLO/LVW

LPSRUW RUJMQHWSFDS3FDS LPSRUW RUJMQHWSFDS3FDS,I SXEOLF FODVV //&6HQG ^ SXEOLF VWDWLF YRLG PDLQ 6WULQJ>@ DUJV WKURZV ,2([FHSWLRQ ^ QHZ $UUD\/LVW3FDS,I!   7XWWH OH LQWHUIDFFH GD ULOHYDUH /LVW3FDS,I! DOOGHYV 6WULQJ%XLOGHU HUUEXI QHZ 6WULQJ%XLOGHU   HYHQWXDOL PHVVDJJL GL HUURUH LQW MU E\WH>@ SNW QHZ E\WH>@ 3FDS¿QG$OO'HYV DOOGHYV HUUEXI  U 3FDS127B2. __ DOOGHYVLV(PSW\ ^ LI U 6\VWHPHUUSULQWI ,PSRVVLELOH OHJJHUH OD OLVWD GHOOH LQWHUIDFFH V HUUEXIWR6WULQJ  UHWXUQ ` IRU M  M  DOOGHYVVL]H  M ^ 3FDS,I GHYLFH DOOGHYVJHW M  6\VWHPRXWSULQWI ?Q1,& G V?Q1RPH V?QM GHYLFHJHW'HVFULSWLRQ  GHYLFHJHW1DPH  ` 6FDQQHU LQ QHZ 6FDQQHU 6\VWHPLQ  6\VWHPRXWSULQWI ?Q6FHJOLHUH XQD LQWHUIDFFLD   M LQQH[W,QW   3FDS,I GHYLFH DOOGHYVJHW M  LQW VQDSOHQ   GLPHQVLRQH GHO SDFFKHWWR GD FDWWXUDUH QRQ VHUYH LQW ÀDJV 3FDS'()$8/7B3520,6&  LPSRVWD]LRQH GHO PRGR SURPLVFXR LQW WLPHRXW   WLPHRXW GL OHWWXUD QRQ VHUYH 씰

A4

Spedire e leggere su LAN: pcap

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

PROGRAMMA



   DSHUWXUD GHOO¶LQWHUIDFFLD GL UHWH  3FDS SFDS 3FDSRSHQ/LYH GHYLFHJHW1DPH  VQDSOHQ ÀDJV WLPHRXW HUUEXI     ,QGLUL]]R 0$& GHVWLQD]LRQH  SNW>@ [ SNW>@ [ SNW>@ [ SNW>@ [ SNW>@ [ SNW>@   ,QGLUL]]R 0$& PLWWHQWH  SNW>@ [ SNW>@ [ SNW>@ [ SNW>@ [ SNW>@ [ SNW>@    SDFFKHWWR GD  E\WH SUDWLFDPHQWH FDVXDOH  IRU LQW L  L L  ^  SNW>L@ E\WH L  `   %\WH%XIIHU E %\WH%XIIHUZUDS SNW    6SHGL]LRQH GHO SDFFKHWWR VXOO¶LQWHUIDFFLD VSHFL¿FDWD  LI SFDSVHQG3DFNHW E  3FDS2. ^  6\VWHPHUUSULQWOQ SFDSJHW(UU   `   SFDSFORVH   UHWXUQ  `  `

[ [

Si noti l’impostazione del driver in modo promiscuo (riga 37). L’esecuzione di questo programma invia il pacchetto sulla LAN del tutto identico a quello spedito con il PROGRAMMA precedente.

3

Spedire un pacchetto sulla LAN (Java)

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

77

A5 WPAN La serie di documenti IEEE 802.15* descrive i principali standard in materia di comunicazioni via radio a bassa potenza e corto raggio denominate WPAN (Wireless PAN ). Tra gli standard più importanti, oltre a IEEE 802.15.1 (Bluetooth) si ricorda IEEE 802.15.4 denominato ZigBee. Come Bluetooth, ZigBee prevede una comunicazione wireless entro un centinaio di metri, su banda ISM e a bassa potenza, ma realizzabile con chip meno complessi di quelli richiesti da Bluetooth e quindi anche meno costosi. Si tratta di una tecnologia ideale per applicazioni industriali su larga scala.

Bluetooth

La tecnologia Bluetooth (BT) è uno standard industriale per la comunicazione senza fili (wireless), di bassa potenza e a corto raggio, tipicamente entro qualche decina di metri (PAN, Personal Area Network). Il progetto originale fu proposto dall’azienda Ericsson Inc. e poi formalizzato da un consorzio di produttori (Sony, IBM, Intel, Toshiba, Nokia) denominato SIG (Special Interest Group) nel 1999. L’obiettivo era quello di eliminare i collegamenti via cavo tra dispositivi normalmente a basso througput come palmari, telefoni cellulari, cuffie auricolari, laptop, stampanti, fotocamere digitali, console per videogiochi, ecc. Con opportune espansioni (dongle), tipicamente su canale USB, è possibile dotare un personal computer di connettività Bluetooth. Il progetto, dalla prima versione 1.0 del 2000, è giunto alla versione 4.0 nel 2010, raggiungendo bitrate variabili tra i 723 kbit/s (~ 1Mbit/s) e i 3 Mbit/s. Nel 2002 anche l’IEEE ha perfezionato uno standard Bluetooth, in conformità con il consorzio SIG, nel documento IEEE 802.15.1*. I dispositivi BT sono suddivisi in tre classi in base alla potenza trasmissiva: i dispositivi di Classe 1 sono i più potenti (100 mW, distanze fino a 100 m), mentre quelli di Classe 2 e 3, i più diffusi, operano da 1 mW a 2,5 mW con copertura fino a 10 metri. Rispetto a Wi-Fi, la potenza di trasmissione è quindi sensibilmente inferiore per i dispositivi di Classe 2 e 3, anche se purtroppo BT agisce nella stessa fascia di frequenze ISM (2,4 GHz), dando qualche problema di interferenza e di collisioni.

1

Modelli e topologie

Le modalità di connessione Bluetooth sono sostanzialmente due: di tipo ACL (Asynchronous ConnectionLess) per una connessione dati affidabile, e di tipo SCO (Synchronous Connection Oriented) per una connessione di tipo voce, in tempo reale e non affidabile. Il modo SCO non viene affrontato in questo testo. Bluetooth instaura topologie wireless di vario tipo, in modo punto-punto, punto-multipunto e di tipo scatternet. In ogni caso la comunicazione è sostanzialmente punto-punto tra due singoli dispositivi: il primo dispositivo che tenta la connessione assume la funzione di master e i rimanenti il ruolo di slave. 78

A5

Bluetooth

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

punto-punto

punto-multipunto (piconet)

multi-punto (scatternet)

master slave

Nella topologia punto-multipunto, detta piconet, sono possibili solo 8 partecipanti, di cui uno, necessariamente, ha il ruolo di master. Se nel raggio della piconet sono presenti più dispositivi (fino a 200), i rimanenti sono posti in stato di parcheggio. Il modello di circolazione dei pacchetti è molto simile a Wi-Fi, con il dispositivo master che «orchestra» la comunicazione tramite un pacchetto speciale detto, anche in questo caso, di beacon. Così come per Wi-Fi, anche Bluetooth adotta uno schema di indirizzamento univoco su scala mondiale con 48 bit (6 byte), e classificazione nelle due parti OUI/serial number del tutto analogo a quello adottato dal MAC di Ethernet. Come in Wi-Fi è possibile associare all’indirizzo MAC una stringa mnemonica(NB). Come ogni tecnologia wireless, Bluetooth deve realizzare varie attività che, in assenza di cavo, sono necessarie: • Inquiring o individuazione, scoprire la presenza di dispositivi BT nella propria cella radio e le loro caratteristiche (profili Bluetooth). • Page o autenticazione, connessione a un dispositivo. • Criptazione, scambio dati in modo cifrato quando i dispositivi sono connessi, con la chiave stabilita al passo precedente. Gli stati fondamentali di un dispositivo BT che tenta di connettersi con un altro dispositivo BT sono i seguenti (vedi figura successiva): a Il dispositivo BT che tenta una nuova connessione (potenziale master)

con un altro dispositivo, prima elenca tutti i dispositivi BT presenti nella sua cella di copertura con una fase di inquiring; quindi sulla fase di paging avvia una procedura di pairing (che va perciò effettuata solo una volta). In questo caso i due dispositivi devono autenticarsi a vicenda e scambiarsi la chiave di cifratura in un tipico protocollo a sfida e risposta (challenge-response) del tutto analoga a quella di Wi-Fi. La chiave di cifratura è ricavata attraverso i MAC address dei dispositivi e un codice PIN (Personal Identification Number) condiviso di 4 caratteri fornito dall’utente. Una volta scambiato il PIN, la chiave è stabilita e i dispositivi connessi. b Il dispositivo BT che invece ha già effettuato il pairing con altri dispositivi, si connette senza interazione con l’utente attraverso il paging usando

1

Modelli e topologie

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

NB. Per il sistema operativo Windows è possibile controllare l’indirizzo MAC di un dispositivo Bluetooth tramite il comando ipconfig /all.

Pairing e PIN La fase di pairing di Bluetooth suscita spesso perplessità negli utenti. Il codice PIN di 4 caratteri che i dispositivi devono condividere, infatti, non è la chiave di cifratura ma solo una parte della chiave che serve a identificare i due capi della connessione “in quel momento”. Si tratta della procedura equivalente alla connessione di un cavo fisico: entrambi i capi devono essere identificati come appartenenti al medesimo canale. Per questo motivo il codice PIN è sufficiente che sia lo stesso per entrambi i dispositivi, e non importa quale. Siccome molti dispositivi BT non hanno la possibilità di fare impostare il PIN dall’utente (per esempio un mouse BT), lo riportano preimpostato in firmware e lo propongono all’utente su una serigrafia a bordo del dispositivo. Se assente, quasi sempre un PIN funzionante è 0000.

79

direttamente la chiave di cifratura per lo scambio dati. La fase di inquiry in questo caso può essere saltata, effettuando direttamente il tentativo di connessione dallo stato di page. standby

page a)

inquiry b)

pairing

connected

2

Protocolli

La pila dei protocolli Bluetooth si può schematizzare con il seguente diagramma: OSI

protocolli Bluetooth

L7 Applicazione L6 Presentazione L5 Sessione L4 Trasporto

TCP UDP IP

L3 Rete

WAP stack

OBEX stack

PPP

L2 Dati L1 Fisico

AT modem

HID

RFCOMM Ra232 emulation

USB emulation

L2CAP

SDP

Audio

HCI

La pila di protocolli Bluetooth è abbastanza articolata: la tecnologia BT offre svariate modalità di connessione e, sostanzialmente, ogni dispositivo possiede caratteristiche proprie denominate profili, in base ai quali vengono implementati o meno i relativi protocolli. A livello 1 si trovano svariati protocolli di accesso al mezzo fisico (etere) denominati HCI (Host Controller Interface). Questo livello è implementato nel firmware del dispositivo ed è sufficiente per realizzare dispositivi di connessione audio. Uno strato intermedio L2CAP (Logical Link Control and Adaptation Protocol ) si occupa di fornire al livello L2 Datalink un’interfaccia standard verso il livello fisico, l’analogo Bluetooth del livello MAC nelle LAN. A questo livello opera anche il protocollo SDP (Service Discovery Protocol ) che ha il compito di elencare i profili dei vari dispositivi rilevati. In base al tipo di profilo posseduto, un dispositivo può realizzare un importante livello denominato RFCOMM (Radio Frequency oriented emulation of serial COMports on a pc) che emula correttamente un protocollo 80

A5

Bluetooth

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

seriale, offrendo la possibilità di ottenere una comunicazione seriale asincrona punto-punto del tutto paragonabile alla classica RS232C. Il dispositivo master dotato di RFCOMM si ritrova attivate sul sistema fino a 6 porte seriali virtuali a cui accedere con le classiche API di un qualsiasi linguaggio di programmazione. RFCOMM è anche il canale per realizzare il livello 2 punto-punto tipico per TCP/IP, ovvero PPP. Sopra RFCOMM si può avere un protocollo «storico» di Bluetooth come OBEX (Object Exchange), operante a livello 5 Sessione per scambio di oggetti via seriale, usato per esempio per trasferire dati in formato vCard e vCalendar (cioè biglietto da visita e calendario degli impegni) e qualche operazione sul file system. Oppure l’intera pila di WAP (Wireless Application Protocol ), uno stack completo di protocolli utilizzato da sistemi mobili cellulari (per esempio smartphone) per avere accessibilità Web su Internet. Se invece il dispositivo è di tipo HID (Human Interface Device), come un mouse o simili, nella pila di protocolli è previsto il relativo strato di gestione con emulazione USB. Un dispositivo BT slave si ritrova la pila di protocolli da utilizzare all’interno del proprio firmware. Un dispositivo BT master (per esempio un personal computer), invece, acquisisce lo stack di protocolli relativamente ai suoi profili tramite la consueta procedura di installazione dei driver all’atto dell’installazione della periferica, quindi a livello di sistema operativo. Purtroppo gli stack di protocolli per i dispositivi BT non sono del tutto interoperabili, quindi è possibile che un master BT sia obbligato a installare più stack di protocolli in base al tipo di periferica BT installata. Questo è il caso dei sistemi operativi Windows. Gli stack di protocolli che possono essere installati a seconda del dispositivo BT a bordo, sono: BlueSoleil Bluetooth Stack, Microsoft Bluetooth Stack, Widcomm Bluetooth Stack e Toshiba Bluetooth Stack. La programmazione Bluetooth avviene tipicamente tramite RFCOMM ed emulazione di porta seriale con le API che quasi ogni linguaggio fornisce per i dispositivi COMM; oppure tramite la programmazione socket (cfr. Sistemi e reti, vol. 3, Programmazione. Socket e funzioni BSD sockets). È anche possibile installare l’SDK per Bluetooth fornito dalle aziende di cui sopra, e integrarne le chiamate nei più diffusi linguaggi di programmazione (per esempio librerie WidComm). Per quanto riguarda i sistemi operativi Linux, è possibile utilizzare l’implementazione dello stack Bluetooth direttamente dal kernel del sistema operativo tramite la libreria BlueZ. BlueZ non soffre dei problemi di interoperabilità tra le varie versioni degli stack di protocolli Bluetooth, fornendo supporto a ognuno di questi tramite una interfaccia comune.

2

Protocolli

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

81

UESITI ESERCIZI PER LA VERIFICA ORALE Saper rispondere ai requisiti fondamentali dà una sufficiente garanzia per sentirsi pronti all’interrogazione. Saper anche rispondere ai requisiti avanzati dimostra una padronanza eccellente degli argomenti del capitolo. Requisiti fondamentali

Requisiti avanzati

1

Ricordare la portata e il bitrate di Bluetooth.

1

Spiegare perché Bluetooth e Wi-Fi possono disturbarsi a vicenda.

2

Accennare alle reti WPAN e alle loro caratteristiche.

2

Commentare la tecnologia ZigBee.

3

Illustrare le caratteristiche di una piconet.

4

Descrivere le principali attività effettuabili da un dispositivo Bluetooth.

5

Spiegare quando bisogna utilizzare il PIN Bluetooth e a cosa serve.

6

Riportare i principali protocolli fisici di Bluetooth e la loro funzione.

7

Spiegare cosa si intende per dispositivi HID.

8

Descrivere il protocollo OBEX usato da Bluetooth.

9

Elencare le due principali tecniche di programmazione di rete per dispositivi Bluetooth.

3

4

5

6

Elencare le classi di dispositivi Bluetooth e commentarle.

Disegnare su un foglio le topologie possibili per Bluetooth.

Descrivere lo schema di indirizzamento di Bluetooth.

Illustrare la procedura di pairing, quando si effettua e perché.

7

Citare qualche protocollo dello stack Bluetooth, collocandolo al giusto livello OSI.

8

Spiegare l’importanza del protocollo RFCOMM.

9

Discutere la questione dei driver per Bluetooth: la situazione per Windows e Linux.

10 Definire e commentare la nozione di roaming. 11 Effettuare

una ricerca sullo stack protocollare WAP e spiegare che cosa consente di implementare.

12 Illustrare la funzione del pacchetto di beacon per

10 Provare a capire e quindi a illustrare come può essere possibile configurare una rete TCP/IP su una piconet.

11 Mostrare per quale motivo due dispositivi Bluetooth su una piconet (con almeno tre dispositivi) non comunicano mai direttamente.

12 Spiegare

se due dispositivi Bluetooth connessi punto-punto sono effettivamente dispositivi paritari o meno.

Bluetooth.

13 Riportare casi reali di topologie punto-punto, pi13 Descrivere

un dongle Bluetooth e spiegare a

cosa serve.

82

A5

conet e scatternet per dispositivi Bluetooth (anche ricercando in rete).

Bluetooth

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

SEZIONE

B

Reti. Protocolli di indirizzamento e instradamento per le reti WAN Per affrontare adeguatamente i temi contenuti in questa sezione bisogna avere una sufficiente competenza su alcuni argomenti prerequisiti. Per verificare se la conoscenza necessaria degli argomenti è sufficiente, svolgere questa breve attività di autovalutazione. Se non si è in grado di rispondere a una domanda o si è solo parzialmente certi della risposta data, è meglio considerare la risposta come errata ai fini dell’autovalutazione. 1 a 2

Il numero 255 decimale equivale ai due numeri binario ed esadecimale b 101b e FGh c 1111111b e ffh d 11111111b e ffh

255 e 255

Per impostare a 1 il bit di peso 3 del valore A si esegue b A and 1 c A or 8

a

A or 1

3 a

Per sapere se i bit di peso 2, 1 e 0 di A valgono 101b si controlla se b A or 7 = 5 c A and 5 = 7 d A and 7 = 5 not A = 5

4

Lo IANA è una sigla che indica

a

un tipo di cavo c un’associazione che gestisce gli indirizzi MAC 5

b d

d

A and 8

un istituto che gestisce gli indirizzi IP un tipo di pacchetto Ethernet

La topologia logica di una rete WAN è tipicamente a b mesh c bus

a

maglia

6 a

I dispositivi di interconnessione tipici per reti WAN e reti LAN sono rispettivamente b modem e Access Point router e switch

c

switch e router

7 a

I seguenti sono rispettivamente un indirizzo di livello 2 e un indirizzo di livello 3 b 10.18.0.3 e 5C-26-0A-29-BE-34 192.168.0.1 e 23

c

5C-26-0A-29-BE-34 e 192.168.1.1

d

d

d

virtuale

fibra ottica e Fast Ethernet

5C-26-0A-29-BE-35 e 192.168.260.1

8

Una RFC è

a

una normativa

9

Durante il cammino di un pacchetto su una rete WAN quali indirizzi cambiano? indirizzi di livello 1 b indirizzi di livello 2 c indirizzi di livello 3 d indirizzi di livello 4

a

b

un protocollo

c

un documento tecnico

d

un tipo di pacchetto

10 Per impostare a 0 gli ultimi 4 bit di un valore v e lasciare invariati gli altri 4 bit, si esegue a v AND f0h b v OR 0fh c NOT v d v AND 10h 11 Un indirizzo di broadcast deve arrivare a a tutti gli host di una rete c

a un solo host sulla rete

b d

non è valido a un gruppo di host

12 L’applicazione arp restituisce un indirizzo a MAC b LLC c SNAP

d

IP

Conoscenza necessaria: 10 risposte corrette. Risposte corrette: d c d b a a c c b a a a. 83 Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

B1 Login Il 29 ottobre 1969 alle 22.30, nello Stanford Research Institute di Menlo Park (California), il programmatore Bill Duvall riceve sul suo calcolatore (uno Scientific Data System 940), la stringa «lo». A inviarla è stato Charles Kline, suo collega dell’Università della California di Los Angeles. Il sistema di comunicazione, infatti, dopo aver inoltrato correttamente la «l» e la «o», va in crash e non riesce a spedire «gin». Questa è stata la prima parola «pronunciata» dalla rete Internet. La supervisione del progetto fu a cura di Leonard Kleinrock, che impiegò il primo rudimentale router denominato IMP (Interface Message Processor). A partire dal 5 dicembre dello stesso anno si collegarono alla rete anche l’Università della California di Santa Barbara e l’Università dello Utah, come stabilito nel progetto originario.

Il livello 3: Rete

In una rete con topologia a maglia come una WAN, si pone il problema di far raggiungere la destinazione ai pacchetti dei messaggi, destinazione che non è direttamente connessa al mittente come nei modelli LAN. In altri termini la rete magliata deve fornire un meccanismo per individuare un cammino valido da mittente a destinatario per qualsiasi coppia di stazioni host (o ES, End System) presenti sulla rete. Questo è il compito del livello 3 Rete (Network Layer). Il cammino deve coinvolgere quindi stazioni intermedie, denominate router (o IS, Intermediate System), che rappresentano i nodi intermedi della rete e che posseggono più di una interfaccia fisica per almeno due connessioni su reti differenti. IS ES

ES ES

ES IS

IS IS

ES ES

ES

IS IS

ES IS

ES ES

ES

I nodi intermedi devono quindi possedere una serie di capacità che consentano di instradare i pacchetti da una interfaccia di provenienza a una interfaccia di destinazione. Elementi base dei protocolli di livello 3 Rete (Network) sono quindi: 1. 2. 3. 4. 84

l’apparato router e le sue porte di inoltro; gli indirizzi contenuti nei pacchetti di livello 3 Rete; la tabella di instradamento (TdI), cioè i dati per decidere i cammini; l’algoritmo di instradamento, le regole per creare la TdI.

B1

Il livello 3: Rete

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

Su un nodo intermedio IS deve essere implementato un algoritmo di instradamento (procedure) a sua volta basato su una tabella di instradamento (struttura dati). In sintesi: Sulla ricezione di un pacchetto, il livello 3 Rete operante sugli IS apre la PDU (il pacchetto) di livello 3 per estrarne gli indirizzi di livello 3, quindi avvia l’algoritmo di instradamento che aggiorna la tabella di instradamento da cui decidere la porta di inoltro. Per quanto esposto, la problematica dell’instradamento affrontata al livello 3 di rete viene quasi del tutto affrontata e risolta dai nodi intermedi IS, mentre i nodi ES non implementano in modo sostanziale il livello 3. D’altra parte i nodi IS non hanno spesso ragione di occuparsi delle problematiche dei livelli superiori al terzo, pertanto uno schema a livelli delle stazioni su una rete WAN che descrive una circolazione dall’host A all’host M risulta essere (vedi anche la figura del paragrafo Routing CNLS: by network address): A

M

utente

utente

L7 Applicazione L6 Presentazione L5 Sessione L4 Trasporto L3 Rete L2 Dati L1 Fisico

R1

R2

R3

R4

Si può anche affermare che il livello 3 Network isola i dettagli dell’hardware di rete e li nasconde ai livelli superiori: gran parte del livello 3 e tutti i livelli superiori al 3 sono esclusivamente software.

1

Routing

La tabella di instradamento è una struttura dati di semplice concezione, costituita da un certo numero di righe che contengono le regole con cui decidere su che porta dell’IS un determinato pacchetto deve essere inoltrato. Questa operazione è detta routing. Ogni riga è costituita da alcuni campi, tra cui Indirizzo e Porta. Quando riceve un pacchetto di livello 3, l’IS ne estrae l’indirizzo destinazione, consulta le righe della TdI alla ricerca di tale indirizzo (nella colonna Indirizzo) e, individuata la relativa riga, determina la porta ove instradare dal campo Porta corrispondente. Il campo Indirizzo può prevedere anche gruppi di indirizzi, in modo tale che non sia necessario avere una riga per ogni singolo nodo della rete. Inoltre è possibile che esistano più regole che contengono lo stesso indirizzo (ma differente numero di porta), affinché si possano avere alternative di instradamento in caso di porte (o linee) guaste.

1

Routing

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

85

Gli altri campi delle righe di una TdI riguardano le cosiddette metriche, ovvero una metrica di costo, valutata sia in base ai costi economici delle varie linee, sia in base all’efficienza o velocità delle linee; e una metrica di salto (hops), che segnala quanti nodi intermedi devono essere attraversati prima della destinazione. I campi di metrica servono per stabilire l’instradamento in caso di alternative di linea (più regole per la stessa destinazione) e, generalmente, la consuetudine suggerisce di privilegiare prima le linee con minor costo, quindi quelle con minor hops. Gran parte dell’efficienza e delle caratteristiche degli algoritmi di routing si basa sui modi in cui la TdI viene creata e mantenuta aggiornata dagli IS. La TdI ideale dovrebbe contenere tante righe quanti sono gli host di una rete e dovrebbe essere disponibile per ogni IS della rete. Inoltre, a ogni modifica della topologia, ovvero a causa del succedersi di linee interrotte, nuove linee, nuovi IS e IS eliminati, nuovi ES ed ES eliminati, la TdI dovrebbe essere aggiornata immediatamente su tutti gli host. Tutto ciò non è possibile su reti magliate anche di piccole dimensioni, pertanto gli algoritmi di routing in dotazione agli IS non possono operare in senso deterministico ma devono adeguarsi a criteri sostanziali di funzionamento, tra i quali: • Robustezza e versatilità, per adattarsi senza particolari oneri alle variazioni della topologia. • Stabilità: l’algoritmo deve convergere, cioè deve trovare un cammino in tempi ragionevoli; se non ci sono cambiamenti sulla rete, l’instradamento deve essere immediato usando la TdI. • Equità: l’algoritmo nel calcolare la TdI deve evitare di danneggiare particolari nodi, anche se per questo deve utilizzare qualche cammino non ottimale. Inoltre si possono stabilire degli obiettivi che costituiscono l’ottimalità di un algoritmo di instradamento, anche se spesso sono in contrasto fra loro: • Minimizzazione del ritardo medio di ogni pacchetto (dal punto di vista dell’utente di rete). • Massimizzazione dell’utilizzo della rete (dal punto di vista del gestore di rete). • Possedere un certo grado di tolleranza ai guasti (fault tolerance). Esistono sostanzialmente due approcci al problema dell’instradamento che, pur essendo simili per quanto riguarda il problema della ricerca del cammino, in seguito adottano tecniche di ritrasmissione completamente differenti; i due approcci riflettono le due categorie di reti che abbiamo già descritto più volte: reti non orientate alla connessione (connectionless o CNLS) e reti orientate alla connessione (connection oriented o CONS).

86

B1

Il livello 3: Rete

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

PROGRAMMA

Hops Dato lo schema nella figura del paragrafo Routing CNSL: by network address, scrivere un programma in linguaggio C che, digitati due numeri indicanti il router di partenza e il router di arrivo, stampi il percorso dell’ipotetico pacchetto. 287387 'LJLWDUH URXWHU VRUJHQWH    'LJLWDUH URXWHU GHVWLQD]LRQH    7UDWWD 5 5 7UDWWD 5 5 5 RN Per rappresentare i collegamenti dei router R1, R2 R3 e R4 della figura si può usare una serie di triplette del genere: 55, cioè “sulla porta P2 di R1 è connesso il router R2”, 55, cioè “sulla porta P4 di R2 è connesso il router R1”, ecc… In tutto risultano 6 triplette. Il codice in linguaggio C potrebbe essere il seguente:          

LQFOXGH VWGLRK! LQFOXGH FRQLRK! LQFOXGH VWULQJK! W\SHGHI VWUXFW ^ FKDU UD>@  ,O URXWHU UD q FRQQHVVR FKDU UE>@  DO URXWHU UE  XQVLJQHG FKDU S  VXOOD SRUWD S GL UD ` /,1. /,1. OLQNURXWHU>@ ^^55`^55`^55`^55`^55`^55``

  LQW PDLQ YRLG  ^  FKDU FK6FK' V]+RSV>@ SF  LQW LUP UG U RN Q    SULQWI 'LJLWDUH URXWHU VRUJHQWH      FK6 JHWFKH   SULQWI ?Q'LJLWDUH URXWHU GHVWLQD]LRQH      FK' JHWFKH    UP FK6     UG FK'     U   V]+RSV>@   SF V]+RSV  Q Q  VSULQWI SFQ5F UP      ZKLOH UP UG Q  ^  RN   IRU L  LVL]HRI OLQNURXWHU VL]HRI /,1.  L  ^  LI OLQNURXWHU>L@UD>@ UP    ^  RN L  LI OLQNURXWHU>L@UE>@  U    ^  RN   U UP  UP OLQNURXWHU>L@UE>@     EUHDN  `  `  `  LI RN! 

1



Routing

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

87

PROGRAMMA



 ^  U UP  UP OLQNURXWHU>RN@UE>@     `  LI RN   ^  SULQWI ?Q,PSRVVLELOH LQVWUDGDUH   UHWXUQ   `   Q Q  VSULQWI SFQ5F UP     SULQWI ?Q7UDWWD VV]+RSV   `   UP UG " SULQWI  RN  SULQWI ?Q(UURUH 77/   UHWXUQ   `

Le triplette vengono controllate individuando la prima che consente al pacchetto di uscire dal router ma non sulla porta da cui è entrato (righe 33÷44). Se nessuna tripletta soddisfa la condizione, si prende la prima tripletta d’uscita dal router, anche se è quella di provenienza (righe 45÷49). Si nota che: a se il mittente non è R1 e la destinazione sta alla sua “destra” (per esempio da R2 a R4), il programma “torna indietro” e poi risale verso la destinazione; b se il mittente non è R4 e il destinatario sta alla sua “sinistra” (per esempio da R3 a R1), il programma agisce razionalmente; c se invece si propone un input illecito tipo da R1 (1) a R9 (9), il programma continua a cercare il percorso indefinitamente (salvo segnalare la situazione con il messaggio “Errore TTL”). Questa situazione è realistica, come si vedrà più oltre (cfr. TTL in Pacchetto IP).

2

Routing CNLS: by network address

Tramite il routing by network address il mittente e il destinatario dei pacchetti sono specificati apponendo in ogni pacchetto di L3 Rete i relativi indirizzi. Il pacchetto di L3 Rete rimane immutato per tutto il percorso, mentre la trama L2 Datalink viene modificata per ogni singola tratta attraversata adattandosi allo strato fisico della nuova linea: cambiano quindi gli indirizzi di livello 2. Inoltre l’IS (che nelle reti CNLS viene anche detto semplicemente router) deve prendere la decisione di instradamento per ogni pacchetto, consultandone l’indirizzo L3 di destinazione: gli IS usano l’indirizzo del destinatario del pacchetto come chiave per la propria TdI per determinare la porta su cui effettuare il successivo instradamento. Questa operazione viene ripetuta a ogni transizione per un IS e per ogni pacchetto, perciò implica un rallentamento nel cammino. I pacchetti di un singolo mittente possono prendere direzioni anche differenti e arrivare alla stessa destinazione attraverso cammini diversi. Per due pacchetti destinati allo stesso host, la TdI dell’IS potrebbe essere cambiata in funzione di nuovi calcoli dovuti alla modifica della topologia (per esempio guasti o nuovi nodi), e quindi il cammino dei due pacchetti potrebbe essere diverso. 88

B1

Il livello 3: Rete

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

C B

D

H add A÷D E÷G H I÷M

P P4 P3 P2 P2

h 1 2 1 2

c 1 2 1 2

R2

P1 P2

P4

R1

A

P P1 P2 P2 P2

h – 3 2 3

R4

P2

P4

add A÷D E÷G H I÷M

P P5 P4 P2 P3

P P1 P1 P1 P2

h 3 3 1 –

c 3 3 1 –

P1

P3

P5

P2

P1 add A÷D E÷G H I÷M

P3

R3 P1

add A÷D E÷G H I÷M

P2 h 2 2 – 1

c 2 2 – 1

I

L

M

c – 3 2 3

E

ESEMPIO

F

G

Routing CNLS Dato lo schema di rete della figura sopra, mostrare, per ogni tratta, l’intestazione di livello 2 e 3 di un pacchetto che parte dall’host A e giunge all’host M. Il pacchetto in partenza dall’host A circola inizialmente su una LAN e deve raggiungere il router R1. Il suo , dove la parte formato sarà quindi r1 a A M chiara indica l’intestazione di livello 2 Datalink (per esempio Ethernet) con gli indirizzi MAC destinazione e mittente (r1 e a), mentre la parte grigia è il pacchetto di livello 3 Network, con l’intestazione che riporta gli indirizzi mittente e destinazione (A e M). Giunto su R1, il router elimina la busta di livello 2, legge l’indirizzo di livello 3 destinazione, consulta la

TdI riportata in figura e inoltra sulla porta P2 il pacchetto imbustandolo nuovamente con gli indirizzi di . livello 2 adeguati: r2 r1 A M Seguendo lo stesso procedimento, la sequenza dei pacchetti sulle rimanenti tratte risulta: r3 r2 A M r4 r3 A M m r4 A M

(tratta R2-R3, attraverso la porta P2 di R2); (tratta R3-R4, attraverso la porta P3 di R3); (sulla LAN di destinazione, attraverso la porta P2 di R4).

Si nota che le TdI riportate non contengono nessuna regola alternativa per gli host, cioè in nessuna colonna Indirizzo (add) delle TdI in figura compare un host più di una volta.

Se tutto ciò diminuisce le prestazioni complessive (possibilità di pacchetti duplicati, pacchetti che arrivano in ritardo rispetto all’ordine di trasmissione, ecc.), il procedimento ottiene tuttavia lo scopo di limitare i problemi dovuti a eventuali interruzioni, malfunzionamenti e congestioni rilevabili sui cammini. Si può affermare che il routing by network address supporta un alto tasso di fault tolerance e, in negativo, un alto tasso di congestione di rete. Questa tecnica è in uso presso architetture di rete non orientate alla connessione (CNLS), dato che privilegiare le alternative di cammino significa non fidarsi dell’affidabilità delle infrastrutture di rete. Per questo motivo i protocolli di L3 di reti CNLS non effettuano il controllo degli errori a questo livello, poiché esso risiederebbe all’interno degli IS, cioè nelle stazioni che possiedono le interfacce di rete inaffidabili, in genere possedute dagli enti gestori delle reti. Il controllo dell’errore viene demandato al livello 4 (Trasporto), cioè alle macchine finali (ES), cioè quelle possedute da chi ha instaurato ed è proprietario della comunicazione. È il modo classico di routing CNLS adottato dalla rete TCP/IP.

2

Routing CNLS: by network address

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

89

PROGRAMMA

Routing CNLS e next hop Date le TdI per tre router R1, R2 e R3, acquisire in input gli indirizzi mittente e destinario di un pacchetto trasmesso dall’host A (direttamente connesso al router R1), quindi mostrare in output il percorso del pacchetto. (In Appendice la versione per Java) 287387 'LJLWDUH LQGLUL]]R VRUJHQWH DEF  D 'LJLWDUH LQGLUL]]R GHVWLQD]LRQH DEF  F 3HUFRUVR D 5 5 5 F Per rappresentare i collegamenti dei router R1, R2, R3 e R4 si usa la stessa tecnica del PROGRAMMA precedente. Le tre TdI dei router R1, R2 e R3 possono essere rappresentate con una struttura dati che riflette le componenti standard di una TdI: Indirizzo, porta, hop e costo (il costo non sarà tuttavia analizzato). Il programma, dà per scontato che il router di partenza sia R1 (riga 34). Tra gli host previsti dal programma (a, b, c), si nota che l’unico direttamente connesso a R1 è a (infatti gli hops nella riga della TdI di R1 relativa ad a vale 0). Il codice in linguaggio C potrebbe essere il seguente:                                              

90

LQFOXGH LQFOXGH LQFOXGH LQFOXGH

VWGLRK! FRQLRK! VWULQJK! VWGOLEK!

W\SHGHI VWUXFW ^ FKDU DGG  LQGLUL]]R XQVLJQHG FKDU S  SRUWD XQVLJQHG FKDU K  KRS XQVLJQHG FKDU F  FRVWR ` 7', 7', WGL5>@ ^^ D `^ E `^ F `` 7', WGL5>@ ^^ D `^ E `^ F `` 7', WGL5>@ ^^ D `^ E `^ F `` 7', WGL W\SHGHI VWUXFW ^ FKDU UD>@ FKDU UE>@ XQVLJQHG FKDU S ` /,1. /,1. OLQNURXWHU>@

 ,O URXWHU UD q FRQQHVVR  DO URXWHU UE  VXOOD SRUWD S GL UD ^^55`^55`^55`^55``

LQW PDLQ YRLG ^ FKDU FK6FK' FKDU V]+RSV>@ SF LQW LMKUSQ  SULQWI 'LJLWDUH LQGLUL]]R VRUJHQWH DEF    FK6 JHWFKH  SULQWI ?Q'LJLWDUH LQGLUL]]R GHVWLQD]LRQH DEF    FK' JHWFKH  K  U  V]+RSV>@  SF V]+RSV Q Q  VSULQWI SFQF FK6  ZKLOH K ^ S  K  Q Q  VSULQWI SFQ5F U    LI WGL IUHH WGL  VZLWFK U ^

B1

Il livello 3: Rete

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica



PROGRAMMA



 FDVH  WGL PDOORF VL]HRI WGL5  PHPFS\ WGLWGL5VL]HRI WGL5  EUHDN  FDVH  WGL PDOORF VL]HRI WGL5  PHPFS\ WGLWGL5VL]HRI WGL5  EUHDN  FDVH  WGL PDOORF VL]HRI WGL5  PHPFS\ WGLWGL5VL]HRI WGL5  EUHDN  `   IRU L  LVL]HRI WGL  L  ^  LI FK' WGL>L@DGG  ^  K WGL>L@K S WGL>L@S  EUHDN  `  `   LI K!  ^  IRU M  MVL]HRI OLQNURXWHU VL]HRI /,1.  M  ^  LI OLQNURXWHU>M@UD>@ U  OLQNURXWHU>M@S S  ^  U OLQNURXWHU>M@UE>@    EUHDN  `  `  `  HOVH  ^  LI K  Q Q  VSULQWI SFQFFK'   HOVH  ^  SULQWI ?Q,PSRVVLELOH LQVWUDGDUH   UHWXUQ   `  `  `   SULQWI ?Q3HUFRUVR VV]+RSV   UHWXUQ   `

Per ogni salto (detto anche next hop), l’algoritmo di inoltro è realizzato tramite: 1. Caricamento della TdI del router (righe 44÷49). 2. L’individuazione della riga di inoltro (regola) sulla TdI del router (righe 51÷58). 3. L’individuazione del router next hop (righe 62÷69) o controllo dell’arrivo a destinazione (basato sul controllo del valore hops della riga, dato che hops=0 significa destinazione raggiunta, righe 73÷79). Per prevenire loop ed errori si usa la sentinella h = – 1.

3

Routing CONS: label swapping

Tramite il label swapping il mittente e il destinatario aprono preventivamente una connessione decidendo il cammino attraverso gli IS. La ricerca del cammino tra mittente e destinatario avviene attraverso gli stessi principi operanti sulle reti CNLS, sfruttando tabelle e algoritmi di instradamento attraverso gli indirizzi univoci di livello 3 assegnati alle stazioni. Una volta stabilito il percorso, però, i pacchetti successivi circolano sempre sullo stesso cammino e non contengono più gli indirizzi mittente/destinatario, ma solo un identificativo della connessione, in modo tale che gli

3

Routing CONS: label swapping

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

91

IS (che nelle reti CONS sono anche detti switch) li possano instradare nel cammino già calcolato, denominato circuito virtuale. Per ottenere questo effetto è necessario che ogni IS sia a conoscenza del fatto che per determinati pacchetti in entrata, la porta in uscita sia sempre la stessa, quella scelta dall’algoritmo di routing nel momento della connessione. Per questo motivo i protocolli label swapping operanti negli IS agiscono su un campo speciale (label) dell’intestazione del pacchetto nel quale inseriscono l’identificativo di riconoscimento del circuito virtuale. Il procedimento funziona solo se ogni IS, quando riceve i pacchetti, associa la label del pacchetto in entrata da una determinata porta a una nuova label creata localmente e associata alla porta d’uscita stabilita durante la connessione: il pacchetto in entrata subirà, al passaggio su ogni IS, la modifica del campo label (label swapping). Questa associazione viene mantenuta in una speciale tabella dell’IS detta look-up table. L’operazione di label swapping è un’operazione decisamente veloce e che non richiede nessun calcolo se non un accesso indicizzato alla look-up table; addirittura l’operazione può essere eseguita in hardware. La differenza con un accesso a una TdI tradizionale è forte: la coppia (porta ingresso, label sul pacchetto) costituisce già l’indice esatto d’accesso alla look-up table per recuperare la coppia d’uscita (porta d’uscita, nuova label); inoltre la dimensione della tabella è uguale al numero di circuiti virtuali attivi in quel momento su quell’IS, cioè relativamente pochi (mentre una classica TdI deve prevedere, in linea di principio, una riga per ogni possibile destinazione, anche quelle magari non utilizzate da tempo). C B

H

D input output P L P L 4 6 2 5 4 7 3 1

S2

P1 P2

P4

P3

S1 P2

P1

A

S3

P1

P2 P3

P5 P4

S4

input output P L P L 1 6 2 8 1 5 2 9

P1 P2

input output P L P L 5 5 3 6 2 5 3 5

I

L

M

input output P L P L 1 3 2 6 1 4 2 7

E F

G

Evidentemente questo sistema ha problemi se un circuito virtuale incappa in una tratta difettosa o che cade durante la sessione: il label swapping presume che le connessioni di livello 2 Datalink siano estremamente affidabili e non prevede tolleranza ai guasti di sessione. Il label swapping è la tecnica standard per le comunicazioni CONS ed è adottata su reti come ATM (Asynchronous Transfer Mode) e MPLS (Multi Protocol Label Switching). 92

B1

Il livello 3: Rete

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

ESEMPIO

Routing CONS Data la rete della figura nella pagina precedente, mostrare il circuito virtuale di un pacchetto «sessione» emesso dall’host A e diretto all’host M. Osservando la look-up table del label-switch S1, si nota che A potrebbe aver creato il circuito virtuale di label L=3 o di label L=4. Entrambi i circuiti virtuali escono sulla porta P2 di S1, ma una volta giunti a S2, il secondo circuito virtuale viene smistato sulla porta P3 di S2 (come risulta dalla look-up table di S2): questo non è il circuito

4

virtuale richiesto dal testo, dato che non raggiungerà (presumibilmente) l’host M. Il primo circuito virtuale, invece, viene inoltrato da S2 sulla porta P2 con label L=5 (look-up table di S2). Giunto a S3, viene inoltrato sulla porta P3 con label L=6, quindi giunto su S4 viene inviato a destinazione (M) tramite la porta P2 e con label L=8. In definitiva la sequenza delle label del circuito virtuale che collega l’host A all’host M è: 3-6-5-6-8. Si nota che la figura descrive anche un circuito virtuale completo dall’host H a un host sulla rete LAN di I, L, M.

Algoritmi di instradamento

A prescindere dalla modalità di comunicazione, connessa o datagramma (un altro modo per indicare le comunicazioni disconnesse), è possibile elencare e discutere tutta una serie di algoritmi di instradamento che generalmente sono adottati da numerosi IS, sia in modo CONS sia in modo CNLS. In definitiva si possono catalogare due classi di algoritmi: • non adattativi (o statici), che usano criteri di instradamento costanti, in genere stabiliti manualmente da un responsabile di rete o basati su algoritmi generali; • adattativi (o dinamici), che usano criteri di instradamento calcolati automaticamente in funzione della topologia della rete, dello stato dei collegamenti e del carico. Monitorizzano in tempo reale, o quasi, lo stato della rete, e si adattano ai diversi scenari che possono presentarsi nella topologia. In molti casi è necessario ricordare come uno stack di rete utilizzi all’interno del proprio livello 3 Network uno o più algoritmi di instradamento, utilizzati in diversi contesti magari in base alle dislocazioni degli IS all’interno della rete oppure come supporto l’uno dell’altro.

4.1

FDR

FDR (Fixed Directory Routing), algoritmo non adattativo in cui ogni nodo IS ha una TdI scritta manualmente con regole Indirizzo/Porta costituite da indirizzo di destinazione e linea su cui trasmettere. In qualche caso è possibile associare più linee per un destinatario, da utilizzarsi in caso di guasto sulla prima, per gestire un pò di fault tolerance. Le regole delle TdI con questa caratteristica di fissità sono dette anche route statiche. Il gestore della rete (network administrator o sysadmin) ha il totale controllo dei flussi di carico e può modificare le TdI allorché si sia in presenza di guasti o per ottimizzare il traffico eventualmente congestionato su qualche nodo.

4

Algoritmi di instradamento

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

93

4.2

Flooding

Adottando il flooding, algoritmo non adattativo, i pacchetti vengono ritrasmessi dagli IS sempre su tutte le linee possibili, tranne quella da cui sono arrivati. Metodo proposto in campo militare per l’ovvia considerazione che il pacchetto arriva sempre a destinazione (a prescindere dal prezzo pagato dalla rete), si tratta di un algoritmo garantito convergente. Su configurazioni a maglia genera numerosi loop (circoli viziosi), cioè pacchetti che transitano più volte sugli stessi IS causando notevole congestione; inoltre non ottimizza l’uso delle linee; per questo motivo sono spesso introdotti criteri per evitare i loop e i pacchetti duplicati, come particolari campi nei pacchetti L3 di tipo age counter che vengono aggiornati a ogni transito sui nodi intermedi per consentire l’eliminazione di pacchetti recidivi. Per questi motivi in realtà non viene quasi mai utilizzato come algoritmo di instradamento, ma come metodo di supporto per altri algoritmi.

4.3

Routing centralizzato

Adottando il routing centralizzato, algoritmo adattativo, uno speciale IS nella rete detto RCC (Routing Control Center), si incarica di: • ricevere informazioni sullo stato della rete dai nodi host connessi a ogni altro router; • usare tali informazioni per calcolare le TdI per ogni router della rete; • distribuire le TdI da lui calcolate a tutti gli altri router presenti in rete. Il metodo centralizzato ottimizza le prestazioni ma è poco robusto, dato che riunisce tutti gli aspetti negativi di una gestione centralizzata: in caso di guasti dell’RCC o di qualche linea a lui connessa, l’intera rete subisce un collasso. Inoltre accumula molto carico sull’RCC che, per questo motivo, deve essere una stazione molto potente sia in prestazioni sia in connessioni.

4.4

Routing isolato

Adottando il routing isolato, modo adattativo, ogni IS decide la propria TdI autonomamente e senza consultare altri router. Ogni IS determina la propria TdI esclusivamente in base al traffico che lo attraversa. Questa gestione è molto simile alla gestione del routing sui Bridge 802.1D, in questo caso effettuata tramite un algoritmo detto di backward learning, integrato anch’esso con uno speciale algoritmo di Spanning Tree. La gestione del routing in questo caso è eminentemente locale e quindi si adatta per un traffico di questo tipo. I pacchetti “stranieri” sono instradati con difficoltà. Il backward learning si basa su un concetto semplice: se da una porta P giunge un pacchetto proveniente dall’host A, allora tramite quella porta P si può raggiungere l’host A. In questo caso la regola (address=A; porta=P) viene automaticamente aggiunta alla TdI. Anche il backward learning viene usato spesso come supporto per altri algoritmi. 94

B1

Il livello 3: Rete

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

4.5

Routing distribuito

In questo caso gli IS risolvono il problema dell’instradamento – e della costruzione delle relative TdI – cooperando tra loro scambiandosi informazioni di servizio periodicamente, utili per la conoscenza reciproca della topologia della rete e quindi dei cammini possibili. Si tratta della metodologia attuata più frequentemente soprattutto su reti ampie, e integra le caratteristiche positive dei due sistemi precedenti, cioè l’ottimizzazione delle prestazioni (per esempio routing centralizzato) con la risoluzione efficiente dell’instradamento locale (per esempio routing isolato). Ogni IS calcola la propria TdI «dialogando» con altri IS e con gli ES, utilizzando una serie di algoritmi e procedure di tipo neighbor greetings, anch’essi localizzabili a livello L3 Network. Esistono due approcci tipici per il routing distribuito: • algoritmi di tipo distance vector, relativamente semplici e usati per reti o sottoreti medio-piccole (fino a 1000 nodi); • algoritmi di tipo link state packet, relativamente complessi e usati per reti ampie (migliaia di nodi).

5

Algoritmi distance vector

Algoritmi anche detti di Bellmann-Ford. In questo caso i router adiacenti si scambiano periodicamente dei pacchetti di servizio detti DV (Distance Vector). Il DV è un insieme di triple di informazioni di tipo indirizzo-hops-costo, derivato dalla TdI e mancante del numero di linea. Le TdI sono costruite in genere con algoritmi di backward learning basati sul traffico locale, mentre l’inoltro di DV serve per aggiornare la topologia dei router dinamicamente: cammini migliori, eliminazione di nodi e relativo autoadattamento, aggiunta di nodi e relativo autoadattamento. Quando un router modifica la propria TdI in base a qualche modifica della topologia o a qualche ricalcolo ottimizzato, invia solo ai router adiacenti un DV. R1

R2 P7

P6

P5

costo P1

P3

P2 add A B R1 C D E R2

Tdl di R1 P h P3 5 P2 3 – – P3 2 P1 7 P1 4 P3 1

c 25 20 – 15 55 23 5

5

P8

P4

DV di R1 su R2 h c add A 6 30 B 4 25 R1 1 5 C 3 20 D 8 60 E 5 28 R2 2 10

P3 P1

P2

Ogni router memorizza per ogni sua porta l’ultimo distance vector ricevuto su quella porta. A questo punto un router ricalcola la sua TdI se: • cade una linea attiva; • scopre un nuovo IS;

5

Algoritmi distance vector

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

95

• viene eliminato un IS; • riceve un DV diverso da quello memorizzato.

ESEMPIO

Se due DV sulla stessa porta contengono la stessa destinazione, e spesso accade, viene scelta la regola in base al costo e, a ugual costo, in base al minor numero di hops. Pur non riportando la porta, la stessa è ricavabile dal DV semplicemente annotando quella da cui è stato ricevuto. A questo punto quasi certamente la TdI del router ricevente sarà modificata e quindi sarà costretto a inviare un DV per ogni suo router adiacente. Quando cambiano una o più TdI sui router di una rete, avviene una propagazione di vari DV che ingenera normalmente altre modifiche di TdI e quindi altre propagazioni di DV; ben presto però il traffico di DV diminuirà fino a scomparire, cioè le TdI tenderanno a stabilizzarsi velocemente ottenendo una nuova configurazione di rete. In generale possono presentarsi loop, e in genere l’algoritmo converge in funzione del router più lento (o quello più trafficato o connesso con i link più lenti). Si tratta di un algoritmo non deterministico e quindi è difficile capirne o predirne il funzionamento. Nessun router contiene la mappa complessiva della rete. Distance vector Nella figura sono rappresentati tre router di una rete che adottano distance vector. P1

P3

R1

P2

7 P2 P1

P2 P3

P1

P3

R0

R2

Le TdI di R0 e R2 valgono: 5 DGG $ % & 5 5

3     

K     

F     "

5 DGG $ % & 5 5

3     

K     

F    " "

a) Determinare la TdI di R1 e completare le TdI di R0 e R2. b) Se giunge a R0 sulla porta P1 il pacchetto di livello 3 Rete: Z;C;3;15;T-PDU mostrare come agisce distance vector. a) Osservando la terza riga delle due TdI assegnate, si desume che il costo del link R0-R2 vale 28–21=7. Infatti per raggiungere C con costo 28 il router R0 attraversa R2 e R2 a sua volta raggiunge C con costo 21.

96

B1

Osservando la seconda riga delle TdI si osserva che l’host B viene raggiunto da R0 con costo 15 attraversando R1; analogamente per R2, ma con costo 12. L’host B deve essere raggiunto dalla porta P1 di R1 (altrimenti i costi e i salti non tornano: se B fosse raggiungibile da R0 attraverso R2 con 2 hops, B dovrebbe essere direttamente connesso a R2, ma così non è). Quindi il costo del link sulla porta P1 di R1 vale 15–7=8. Ne deriva che il costo del link R2-R1 vale 12–8=4, desunto dalla seconda riga della TdI di R2. Ora è possibile completare le tabelle e ipotizzare quella di R1: 5 DGG $ % & 5 5

3     

K     

F     

5 DGG $ % & 5 5

3     

K     

F     

5 DGG $ % & 5 5

3     

K     

F     

b) Se nel pacchetto di livello 3 Rete Z;C;3,15;PDU giunto su P1 di R0 si interpreta Z come indirizzo mittente, C come destinatario e 3 e 15 rispettivamente come hops e costo, allora R0 impara una nuova regola da inserire nella sua TdI: Z,1,3,15, inoltra il pacchetto sulla sua porta P3 (regola sulla terza riga della TdI) e avvia un aggiornamento dei DV inviando il DV=Z,3,15 sia a R2 sia a R1. Ben presto l’algoritmo convergerà e le TdI di R1 e R2 avranno aggiunto, rispettivamente, le regole Z,3,4,22 e Z,1,4,22.

Il livello 3: Rete

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

5.1

Loop di routing

Gli algoritmi basati su distance vector hanno uno spiacevole effetto collaterale, i cosiddetti loop di routing. Si tratta di particolari condizioni per le quali le TdI non sono aggiornate in modo corretto e quindi continuano a instradare cammini non più validi. I router devono quindi adottare alcuni criteri generali per prevenire queste situazioni.

5.2

Route poisoning

Classica situazione per cui un router R1, una volta stabilito che la tratta su una sua porta è guasta (link down), deve segnalare la situazione ai router adiacenti. La segnalazione di R1 avviene inviando un’informazione di routing circa la linea guasta, ma con metrica infinita (route poisoning). Ricevuta l’informazione, R2 e R3 inibiranno l’eventuale regola di routing contenuta nelle proprie tabelle.

5.3

A

R3 R1 R2

R2

A

R1R2 A





R1

Split horizon

Purtroppo gli aggiornamenti collaborativi delle TdI da parte di router adiacenti hanno un inconveniente: essendo periodici, se avvengono quasi contemporaneamente possono ingenerare loop di routing. Per esempio, se R1 e R2 sono stabili, R1 ha informato R2 che attraverso di lui si possono raggiungere determinati host. Ora R1 scopre che una sua porta è guasta e proprio quegli host non sono più raggiungibili; invierà l’informazione «poisoned» a R2 con metrica infinita; ma R2, che non ha ancora ricevuto questo messaggio, sta inviando a R1 la regola per cui attraverso di lui si possono raggiungere proprio quegli host. Ora R2 ha ricevuto l’irraggiungibilità di quegli host, ma R1 invece li ritiene raggiungibili tramite R2, benché con un hop in più. La situazione si ripete periodicamente a ogni scambio periodico di informazioni, generando un count to infinity di salti nelle tabelle di R1 e R2. Per evitare il count to infinity si adotta split horizon, una regola abbastanza banale: se R2 riceve una regola da R1 che riguarda una sua linea diretta (hop=0), allora R2 non ritrasmette quella regola a R1. Una variante migliore è split horizon con poisoning reverse: se ricevuta una regola «poisoned» (indicante una linea guasta), si ritrasmette in flooding l’informazione a tutti i router adiacenti, affinché l’informazione sul guasto si diffonda più velocemente.

5.4

route poisoning

split horizon (1)

R2

R1R2 A 0

A

R1

split horizon (2)

A

1 A R1R2

R2

R1R2 A



R1

split horizon (3)

∞ R2

A

A R1R2

R1R2 A 2

R1

Path holddown

La situazione di count to infinity diventa più grave quando si estende a più di due router interconnessi (per esempio R1 C R2, R2 C R3, R3 C R1). Ora lo split horizon non funziona più: R1 in presenza di guasto invia a R2

5

Algoritmi distance vector

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

97

e R3 l’informazione con metrica infinita; ma contemporaneamente R2 informa R3 che proprio quella linea è ancora attiva (non ha ricevuto ancora l’informazione da R1). Lo split horizon non funziona per R3: il guasto non riguarda una sua linea diretta, quindi invia regolarmente gli aggiornamenti a R2. In questi casi si adotta il path holddown: una volta ricevuta una regola con metrica infinita (poisoned, cioè linea guasta), bisogna ignorare per un determinato intervallo di tempo altre regole ricevute successivamente circa quella linea.

Algoritmi link state packet

6

Anche in questo caso ogni router «impara» il proprio ambito locale con il backward learning (linee e nodi adiacenti), ma fa in modo che la sua conoscenza si propaghi a tutti i router sulla rete, non solo a quelli adiacenti. Trasmette in flooding queste informazioni tramite un pacchetto di servizio detto LSP (Link State Packet) in modo che tutti gli altri router, tramite i LSP ricevuti, possano ricostruirsi una mappa globale della rete. In questo modo tutti i router di una rete possiederanno le informazioni dell’intera topologia della rete, a differenza del metodo distance vector. Quando un router modifica la sua «conoscenza» locale inizia una fase di update process. Pertanto genera un LSP che contiene: • • • • • •

identità di ogni vicino connesso; costo del collegamento (link) relativo; stato del link; numero di sequenza; tempo di validità; age counter. H

R5

C

D

B

2

1

2 P1

R2 4

P3 P4

3 0

A

A /0

5 R6

LSP di R1 B /0 C /0 D /0

R2 /3

R7 0

3

3 0

R3

6

R1

R4

P2

P5

add A÷D E÷G H I÷M R1 R2 R5 R6 R7 R4 R3

add R1 R2 R3 R4 R5 R6 R7

TdI di R3 P h P1 3 P4 2 P2 0 P3 1 P1 2 P1 1 P1 0 P4 0 P4 1 P3 0 – –

c 6 9 2 3 6 3 2 6 9 3 –

I

L

E F

98

G

B1

Il livello 3: Rete

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

M

LSPdbase della rete adiacenze A /0 B /0 C /0 D/0 R1 /3 R5 /1 R3 /4 R6 /5 R2 /4 R5 /2 H /2 R4 /3 R3 /3 I /0 L /0 M /0 R2 /1 R3 /2 R7 /3 R2 /5 R3 /6 E /0 F /0 G /0 R6 /3

R2 /3 R6 /6

ESEMPIO

Il LSP è quindi trasmesso in flooding ottimizzato, per raggiungere tutti i router della rete. L’insieme dei LSP che giacciono su un router – e che tende a essere identico su ogni altro router della rete – è detto LSPdbase (LSP database) e rappresenta la matrice delle adiacenze del grafo pesato (in base al costo) della rete. Tramite il LSPdbase memorizzato su ogni router, dato un indirizzo mittente (quello del router) e un indirizzo destinazione (quello del pacchetto da inoltrare) è sempre possibile calcolare la porta d’uscita tramite l’algoritmo di Dijkstra o SPF (Shortest Path First). Un router quindi applica SPF ogni qualvolta non possiede la regola per un indirizzo destinazione, creando così la propria TdI. Il metodo link state packet garantisce la convergenza, a differenza del metodo distance vector, e la raggiunge in tempi inferiori purché il router sia sufficientemente potente in termini di memoria e prestazioni di CPU. Inoltre esso non ingenera i loop di routing, basando il calcolo dell’instradamento su una TdI realizzata in modo deterministico. Per contro, l’uso del flooding per la diffusione dei LSP determina un considerevole traffico di servizio, con relativa perdita di banda.

Link state packet

Edsger Wybe Dijkstra È il nome di uno degli studiosi più influenti della storia dell’informatica (1930-2002). Tra i suoi risultati più noti si ricorda il concetto di semaforo (fondamentale per la programmazione concorrente), l’algoritmo Shortest Path (ricerca del cammino minimo in un grafo pesato) e il biasimo assoluto verso l’istruzione go to. Detti N il numero dei nodi di un grafo ed E i suoi collegamenti, l’algoritmo Shortest Path ha complessità O(N2), mentre l’algoritmo di Bellman-Ford una complessità pari a O(N · E). L’algoritmo per determinare se un numero è pari o dispari ha complessità O(1), mentre individuare un elemento in una lista non ordinata di N elementi ha complessità O(N).

A partire dal LSPdbase, R2 calcola le porte di inoltro di ogni host e router che vi compaiono, calcolando il cammino minimo:

Data una rete come in figura, calcolare il LSP del router R2 e la TdI di R2.

Per calcolare la TdI di R2 serve il LSPdbase della rete, che è la «somma» di tutti i LSP. Si calcolano quindi gli altri due LSP, relativi a R0 e R1:

TdI di R2 DGG 3 K $·&   '   (·+   5   5  

LSP(R0) = A/0, B/0, C/0, R1/1, R2/4; LSP(R1) = D/3, R0/1, R2/2.

Si nota che potrebbero essere utilizzate alcune regole alternative:

Il LSPdbase risulta:

$·& ' 5 5

Il LSP di R2 è la serie di (add/costo) di tutti gli host adiacenti, perciò: LSP(R2) = E/0, F/0, H/0, R1/2, R0/4.

R0: A/0, B/0, C/0, R1/1, R2/4; R1: D/3, R0/1, R2/2; R2: E/0, F/0, H/0, R1/2, R0/4.

   

   

F     

   

D

R1 B A

3

C 2

1

E P1

4 R0

P3

P2

R2

6

Algoritmi link state packet

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

F H

99

UESITI ESERCIZI PER LA VERIFICA ORALE Saper rispondere ai requisiti fondamentali dà una sufficiente garanzia per sentirsi pronti all’interrogazione. Saper anche rispondere ai requisiti avanzati dimostra una padronanza eccellente degli argomenti del capitolo. Requisiti fondamentali

Requisiti avanzati

1

Ricordare e commentare gli elementi base dei protocolli di livello 3 Rete.

1

Mostrare su un foglio il tragitto «end to end» (da mittente a destinatario) di un pacchetto su WAN in riferimento ai livelli OSI dei nodi attraversati.

2

Spiegare cosa si intende per regola di routing.

2

Elencare i criteri generali adottati e gli obiettivi perseguiti da un protocollo di routing.

3

Commentare il significato di metrica, hop e costo per le regole di routing.

3

Osservando la figura del Routing CNLS, spiegare ogni tratta attraversata da un pacchetto che va da C a H.

Elencare i due approcci base del routing e commentarne le caratteristiche.

4

Spiegare i campi di una look-up table.

5

Associare i metodi di routing CNLS e CONS ai principali stack di rete.

4

5

Chiarire la nozione di next hop.

6

Illustrare la nozione di circuito virtuale.

6

Riportare la tassonomia degli algoritmi di instradamento e discuterli.

7

Descrivere i modi di routing FDR e flooding.

7

Definire la nozione di «route statica» e provare a indicarne un possibile impiego.

8

Elencare i principali metodi di routing illustrandone le caratteristiche base.

8

Ricordare quali modi di instradamento di supporto utilizzano Distance Vector e Link State Packet.

9

Introdurre il concetto di algoritmo di routing distribuito.

9

Descrivere il comportamento di Distance Vector alla modifica della topologia.

10 Discutere la tecnica di split horizon. 10 Spiegare

la tecnica di routing Backward Learning e mostrarne qualche esempio.

11 Descrivere l’algoritmo Distance Vector. 12 Illustrare la nozione di loop di routing ed elencare le tecniche per prevenirne gli effetti.

13 Descrivere l’algoritmo Link State Packet. 100

B1

11 Discutere la tecnica di path holddown. 12 Confrontare i modi di distribuzione della struttura dati distance vector e della struttura dati link state packet.

13 Disegnare su un foglio lo schema di una rete magliata con qualche IS e ES, assegnare i costi ai rami e individuare i cammini migliori per qualche coppia di ES.

Il livello 3: Rete

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

ESITI ESERCIZI PER LA VERIFICA SCRITTA 5

Instradamento

1

Dato il seguente schema di rete, determinare le look-up table degli switch in modo che siano definiti i seguenti circuiti virtuali: A-C, A-E, B-C, B-D, C-E.

Dato il seguente schema di rete, determinare le TdI dei router R1, R2, R3 e R4. C

B

D

B

C

H P1

A R2

R4

P1

P2

P4

R1

P1

S3 S1

P2

P3

P2

P1

P3

P1

P3

P2

S2

P3

P3

E

D

P2

P2

P1

P1

A

6

P2

R3 P3

Dato il seguente schema di rete, determinare le look-up table degli switch in modo che siano definiti i seguenti circuiti virtuali: A-D, C-E, D-E, A-B, B-A. A

C

E P1

G

F

S1

S2 P2

2

Dato lo schema di rete precedente, mostrare, per ogni tratta, l’intestazione di livello 2 e 3 di un pacchetto che parte dall’host A e giunge all’host G.

D

A

E

S3

S1

P2

P4

R1

R4

P2

P1

P3

B

P3

P2

S5 P3

P1 P2

P4

P3

E

D

P1

P1

P2 P2

P2

P1

P1

A

C

P2

R3

6ZLWFK 6 P3

F G

4

P1

S2

P1

P3

E

D

P2

R2

P2

Dato il seguente schema di rete e le look-up table degli switch, indicare quali circuiti virtuali sono descritti.

P1

B

P3

B

Dato il seguente schema di rete, determinare le TdI dei router R1, R2, R3 e R4. C

P1

P3

P1 P4

7 3

S3

P2

H

Dato lo schema di rete precedente, mostrare, per ogni tratta, l’intestazione di livello 2 e 3 di un pacchetto che parte dall’host E e giunge all’host A.

input output P L P L 1 1 3 2 2 1 3 3 1 2 3 1

8

S4

F

6ZLWFK 6

6ZLWFK 6

input output P L P L 2 3 3 4 2 1 3 3 2 2 3 2

input output P L P L 1 2 3 4 1 4 2 1 1 3 2 4

Dato lo schema di rete precedente, aggiornare le look-up table per i seguenti collegamenti: C-E, F-A, D-E, B-F, A-F.

Esercizi Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

101

9

Dato il seguente schema di rete e le look-up table degli switch, indicare quali circuiti virtuali sono descritti. C

P1

E

P3

A

$GG $ % &

TdI R1 3 K      

F   

$GG $ %

TdI R2 3 K F      

TdI R4 $GG 3 K F %    &   

S4

P2

14 Dato lo schema di rete dell’esempio precedente, riporP1

S1

S3 P2

B

P2

tare le TdI aggiornate in base al traffico (Mitt, Dest, h, c):

S5

P1 P2

S2

P5 P4

a) su P2 di R3 giunge (X,A,0,0); b) su P3 di R4 giunge (Y,B,1,9); c) su P1 di R1 giunge (Z,X,2,3).

P1 P2

P3

F P1

15 Dato lo schema di rete seguente e le TdI relative,

D

6ZLWFK 6 input output P L P L 1 1 2 1 2 2 1 2 2 3 1 3

6ZLWFK 6

6ZLWFK 6

input output P L P L 1 1 5 1 5 2 1 2 3 3 1 3

input output P L P L 2 1 1 1 3 2 2 2

determinare i costi mancanti delle linee.

R1

P2

R2

P1

P3

P1

P2 P3

P4

3

10 Dato

P2

lo schema di rete precedente, aggiornare le look-up table per i seguenti collegamenti: A-D, E-D, A-F, B-D, C-E.

11 Dato lo schema di rete dell’Esercizio 1, determinare le TdI dei router dopo aver instradato il seguente traffico in backward learning (le TdI sono inizialmente vuote): A A B, A A H, B A A, H A D, G A A, G A D, A A G.

R3

$GG % &

A A B, A A H, B A A, H A D, G A A, G A D, A A G.

TdI R1 3 K F      

$GG $ %

TdI R2 3 K F      

TdI R3 $GG 3 K F $    %   

16 Dato lo schema di rete dell’esempio precedente, riportare le TdI aggiornate in base al traffico (Mitt, Dest, h, c): a) su P2 di R2 giunge (X,A,0,0); b su P2 di R1 giunge (Y,B,1,9); c) su P1 di R3 giunge (Z,C,2,3).

12 Dato lo schema di rete dell’Esercizio 3, determinare le TdI dei router dopo aver instradato il seguente traffico in backward learning (le TdI sono inizialmente vuote):

P3

P1

17 Dato il seguente schema di rete (le linee senza costo hanno costo 0), determinare il LSP di ogni router, le TdI di ogni router e il LSPdbase della rete.

13 Dato lo schema di rete seguente e le TdI relative,

D

C

determinare i costi mancanti delle linee.

H

R2 P1

R1

B P2

P1

R1

R4 P2

P4

R2

P2

P3

P1

4

P3

3

P2

3

P2

P1

P3

2

P1

7

A

P1

P3

P1

5

P2

E P2

P3

P1

R3

102

P3

R4

B1

Il livello 3: Rete

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

P2

P4

R3 P3

G F

ESITI ESERCIZI PER LA VERIFICA DI LABORATORIO Per compilare gli esercizi proposti è stato usato l’ambiente gratuito multipiattaforma Windows/Linux Code::Blocks 10.5 con gcc 4.4.1 e Eclipse SDK 4.2.0 con Jdk 7 per Java 1.7. I testi degli esercizi presentano uno o più layout di input/output richiesti; in questo modo sono indicate, a volte, alcune specifiche del programma come l’output, il controllo dell’input o i valori ammissibili. Instradamento

1

Scrivere un programma che implementa l’algoritmo FDR con route statiche scritte in un file di testo $GG3KF . /D\RXW

287387 )'5 VX URXWHU FRQ  LQWHUIDFFH 7G, $GG 3 K F $    %    &    '    3DFFKHWWR GD LQVWUDGDUH 0LWW'HVW  = $ 6X SRUWD 

)ORRGLQJ 7UDI¿FR  )ORRGLQJ 7UDI¿FR  6X 3 7UDI¿FR  )ORRGLQJ 7UDI¿FR  6X 3 7UDI¿FR 

4

30LWW'HVWKF   % &   30LWW'HVWKF   % $   30LWW'HVWKF   & (   30LWW'HVWKF   $ &   30LWW'HVWKF  

Scrivere un programma che, date le look-up table di 4 switch, instradi i pacchetti forniti dall’utente nella forma (0LWW, /DEHO). /D\RXW

287387

3DFFKHWWR GD LQVWUDGDUH 0LWW'HVW  = ; 1RQ LQVWUDGDELOH

,QVHULUH 0LWWHQWH H /DEHO $  &LUFXLWR YLUWXDOH 

3DFFKHWWR GD LQVWUDGDUH 0LWW'HVW  

,QVHULUH 0LWWHQWH H /DEHO +  &LUFXLWR YLUWXDOH 

2

Scrivere un programma che implementa l’algoritmo FDR con route statiche scritte in un file di testo $GG3KF e ÀRRGLQJ. /D\RXW

287387 )'5 VX URXWHU FRQ  LQWHUIDFFH 7G, $GG 3 K F $    %    &    '    3DFFKHWWR GD LQVWUDGDUH 30LWW'HVW  = $ 6X SRUWD  3DFFKHWWR GD LQVWUDGDUH 30LWW'HVW  = ; 6X SRUWH  ÀRRGLQJ 3DFFKHWWR GD LQVWUDGDUH 30LWW'HVW  

3

Scrivere un programma che implementa l’algoritmo backward learning su un router a tre porte. /D\RXW

287387 7G, YXRWD 7UDI¿FR  30LWW'HVWKF   $ &  

,QVHULUH 0LWWHQWH H /DEHO  Nota: ispirarsi al programma Routing CNLS e next hop presente nel testo. Il layout del programma agisce sullo schema di rete connessa riportata nel disegno del paragrafo Routing CONS: label swapping.

5

Scrivere un programma che implementa l’algoritmo FDR con route statiche scritte in un file di testo $GG3KF e ÀRRGLQJ ma con il formato di indirizzi IP. /D\RXW

287387 )'5 VX URXWHU FRQ  LQWHUIDFFH 7G, $GG 3 K F                 3DFFKHWWR GD LQVWUDGDUH 30LWW'HVW     VX SRUWD  3DFFKHWWR GD LQVWUDGDUH 30LWW'HVW     ÀRRGLQJ 3DFFKHWWR GD LQVWUDGDUH 30LWW'HVW  

Esercizi Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

103

B2

Protocollo IP

Il protocollo IP (Internet Protocol), meglio noto come IPv4 (IP version 4), è il protocollo di livello 3 Network più famoso e utilizzato al mondo. La prima formulazione ufficiale è stata redatta nel 1981 con l’RFC 791. Assieme a TCP (Transmission Control Protocol) costituisce l’ossatura della rete comunemente nota come TCP/IP o Internet Protocol Suite. OSI L7 Application L6 Presentation L5 Session

TCP/IP HTTP SMTP NFS FTP

L4 Transport

TCP UDP

L3 Network

IP routing ICMP ARP

L2 Data link L1 Physical

non specificati

La figura mostra l’architettura dell’Internet Protocol Suite e la paragona con il modello di riferimento ISO/OSI, riportando i protocolli più famosi operanti nei livelli della suite TCP/IP. Siccome IP è un protocollo disconnesso, esso determina la natura complessivamente disconnessa dell’intera rete TCP/IP. La parte connessa di TCP/IP, comunque sempre necessaria in una rete, è offerta dal protocollo di trasporto TCP, che è un protocollo connesso. In molti casi e soprattutto quando i livelli inferiori sono ritenuti affidabili, TCP/IP può usare come livello di trasporto UDP (User Datagram Protocol) al posto di TCP, offrendo in questo caso un esempio di rete quasi totalmente disconnessa dato che UDP è un protocollo disconnesso. I livelli 5 Sessione e 6 Presentazione non esistono in TCP/IP e sono demandati ai protocolli operanti al livello 7 Applicazione, pertanto non esiste uno standard univoco per gestire le problematiche di livello Sessione e di livello Presentazione. L’architettura di rete TCP/IP non specifica i livelli 1 e 2 della rete, ma utilizza quelli normalmente disponibili sugli host e conformi agli standard. Per esempio, nell’ambito di rete locale Ethernet, IP opera sul protocollo LLC o direttamente sulle trame Ethernet; oppure, nell’ambito delle reti geografiche, IP opera sul protocollo PPP, ma anche integrato con tecnologie 104

B2

Protocollo IP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

connesse come ATM e MPLS (cfr.). Esistono anche realizzazioni per reti fisiche molto strane, spesso diffuse solo all’interno di certe comunità o utilizzate in ambito industriale.

1

Protocollo ARP

Il protocollo ARP (Address Resolution Protocol, RFC 826) serve per ottenere l’indirizzo di livello 2 (per esempio un MAC address) di una stazione di cui si conosce solo l’indirizzo di livello 3 (per esempio l’indirizzo IP). Quando un host A (mittente) su una LAN si ritrova a dover spedire una informazione a un host B (destinazione) di cui conosce solo l’indirizzo IP, affinché i pacchetti che contengono l’informazione possano raggiungere l’host B sulla LAN, quei pacchetti devono contenere l’indirizzo MAC destinatario dell’host B. Per recuperare tale indirizzo, l’host A deve servirsi di ARP: invia un pacchetto ARP Request in broadcast sulla rete, contenente l’indirizzo IP di B e attende che B, se presente nel dominio di broadcast e regolarmente acceso, risponda con un pacchetto ARP Reply di tipo unicast, contenente il suo indirizzo MAC. Solo ora l’host A può inviare l’informazione all’host B, incapsulandola in una trama Ethernet corredata dall’indirizzo MAC destinazione di B. Il protocollo ARP deve essere implementato su tutti gli host di una rete, sia la parte client (ARP Request), sia la parte server (ARP Reply). Il protocollo ARP memorizza tramite il sistema operativo una tabella che contiene le associazioni (Indirizzo IP, MAC address) in modo da evitare di inviare un ARP Request se l’indirizzo IP dell’host ricercato è già stato «risolto» e il suo indirizzo MAC si trova nella tabella. Questa tabella è detta ARP cache ed è consultabile e gestibile con il programma omonimo arp (cfr. Sistemi e reti, vol. 1, Applicazioni, arp). Le voci nell’ARP cache vengono periodicamente eliminate e reinserite, per evitare che un’informazione troppo vecchia fornisca associazioni errate. Come si è cercato di rappresentare nella figura precedente, il protocollo ARP non è rigorosamente un protocollo di livello 3 Network (come indica la letteratura), piuttosto un protocollo di livello “2,5”, notazione che indica una diretta dipendenza dal livello 2 Data link su cui ARP si ritrova a operare.

Proxy ARP Siccome ARP agisce in broadcast, la sua azione non si estende tra le subnet di una rete privata: gli host di una sottorete diversa da quella del mittente ARP Request non risponderanno, dato che i router bloccano il traffico MAC broadcast. In questi casi si può attivare sui router di una rete privata il protocollo proxy ARP (RFC 1027): ora la richiesta ARP verrà inoltrata dal router alla sottorete opportuna, e l’host «distante» risponderà al router con il proprio indirizzo MAC. Il router con proxy ARP quindi renderà la risposta al richiedente originale.

7 6 54321 0 7 6 5 43210

HTYPE PTYPE HLEN

PLEN OPER

SHA (byte 5-4)

1.1

SHA (byte 3-2)

Pacchetto ARP

SHA (byte 1-0) SPA (byte 3-2)

Il pacchetto ARP ha dimensione fissa 28 ottetti. Il significato dei campi è il seguente (tra parentesi la dimensione in bit): • HTYPE (16, Hardware Type): codifica del tipo di livello fisico (Ethernet=1). • PTYPE (16, Protocol Type): codifica del protocollo richiedente. Come Ethertype (per esempio IPv4=0800h).

1

Protocollo ARP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

SPA (byte 1-0) THA (byte 5-4) THA (byte 3-2) THA (byte 1-0) TPA (byte 3-2) TPA (byte 1-0)

105

Reverse Address Resolution Protocol, RFC 903, è il nome del protocollo «inverso» ad ARP: indicato un indirizzo di livello 2 (per esempio il MAC address) di un host, restituisce l’indirizzo di livello 3 (per esempio l’indirizzo IP) di quell’host. Come per ARP, la RARP Request è inviata in broadcast, ma a differenza di ARP la parte server del protocollo (cioè chi risponde con RARP Reply) è realizzata solo su alcune macchine, in modo da centralizzare la distribuzione degli indirizzi IP. Il formato del pacchetto è identico, anche se l’uso dei campi è ovviamente diverso. OPER vale 3 per RARP Request e 4 per RARP Reply. RARP ha un problema: i pacchetti broadcast vengono ‘fermati’ dai router, perciò il servizio di distribuzione degli indirizzi IP non è ottimizzato. Per questo motivo RARP è reso obsoleto da protocolli di livello superiore come BOOTP e DHCP (cfr. Sistemi e reti, vol. 3, DHCP ).

• HLEN (8, Hardware Length): dimensione in byte dell’indirizzo fisico richiesto. • PLEN (8, Protocol Length): dimensione in byte dell’indirizzo «richiedente». • OPER (16, Operation): codifica per ARP Request (1) e Reply (2). • SHA (16, Sender Hardware Address): se Request, indirizzo MAC del richiedente; se Reply, indirizzo MAC richiesto. • SPA (16, Sender Protocol Address): se Request, indirizzo IP del richiedente; se Reply, indirizzo IP richiesto. • THA (16, Target Hardware Address): se Request, non usato (tutti a 0); se Reply, indirizzo MAC del richiedente. • TPA (16, Target Protocol Address): se Request, indirizzo IP «di cui scoprire l’equivalente fisico»; se Reply, indirizzo IP del richiedente. ESEMPIO

RARP

Frame ARP Data la seguente sequenza esadecimale di byte che rappresenta un pacchetto ARP, decodificarne l’intestazione.            E  ED F D     FH H E  F D   HTYPE (byte 0-1 = 0001h): codifica 1, cioè hardware di tipo Ethernet. PTYPE (byte 2-3 = 0800h): richiedente con codifica Ethertype, cioè IP. HLEN (byte 4 = 06h): lunghezza indirizzo richiesto 6 byte (MAC Address). PLEN (byte 5 = 04h): lunghezza indirizzo del richiedente 4 byte (IP address). OPER (byte 6-7 = 00h 02h): pacchetto ARP di tipo ARP Reply. SHA (byte 8-13 = 00h 13h 46h 0bh 22h bah): MAC richiesto. SPA (byte 14-17 = c0h a8h 00h 01h): IP host richiesto, 192.168.0.1. THA (byte 18-23 = 00h 16h ceh 6eh 8bh 24h): MAC del richiedente. TPA (byte 24-27 = c0h a8h 00h 72h): IP del richiedente (192.168.0.114).

Quando un host A vuole l’indirizzo MAC di un host B di cui conosce solo l’indirizzo IP, prima di tutto consulta la sua ARP cache per verificare se esiste l’indirizzo IP di B. Infatti se esiste l’indirizzo IP di B in ARP cache, allora si può prelevare immediatamente il suo indirizzo MAC e non è necessario fare una richiesta in rete. Se invece l’indirizzo IP di B non compare in ARP cache, allora va fatta una richiesta ARP in rete. Si prepara quindi un pacchetto ARP (ARP Request) con i seguenti campi impostati: HTYPE = 1, hardware di tipo Ethernet. PTYPE = 0800h, richiedente di tipo IP (Ethertype = 0800h). HLEN = 6, dimensione indirizzo richiesto, i 6 byte di un indirizzo MAC. PLEN = 4, dimensione indirizzo del richiedente, i 4 byte di un indirizzo IP. OPER = 1, pacchetto ARP di tipo ARP Request. SHA = MAC(A), l’indirizzo MAC del richiedente. SPA = IP(A), l’indirizzo IP del richiedente. THA = 00h 00h 00h 00h 00h 00h (tutti a zero, non usato in ARP Request). TPA = IP(B), l’indirizzo IP dell’host di cui si vuole l’indirizzo MAC. 106

B2

Protocollo IP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

PROGRAMMA

Quindi il pacchetto viene incapsulato in un frame Ethernet broadcast con Ethertype = 0806h (la codifica di ARP) e trasmesso su Ethernet. Il pacchetto ARP Reply corrispondente sarà di tipo unicast, e conterrà, nel campo SHA, il MAC dell’host B ricercato (MAC(B)). Infine A, ricevendo risposta, inserirà l’associazione (IP(B), MAC(B)) nell’ARP cache. Leggere un frame da file di testo Dato un file di testo (per esempio frameeth.txt) contenente una serie di coppie di caratteri esadecimali rappresentanti altrettanti byte, scrivere un programma in linguaggio C per ricavare l’equivalente array di byte in memoria. (In Appendice la versione per Java)

$UUD\  G   H G  F

287387 IUDPH E  I    IF  E F   I I GD D H  II HI       F  D    IF  E F  GF DD DD          G  II ID H       IG       G H G     E 

Per analizzare convenientemente i pacchetti circolanti su una rete è utile rappresentare la loro sequenza di byte in esadecimale, magari in un file di testo. Quindi è molto comodo poter disporre di quella sequenza in un vettore di byte in modo da poter accedere agli elementi con un indice. Un esempio di programma in linguaggio C potrebbe essere:                                     

LQFOXGH VWGLRK! LQFOXGH VWULQJK! LQFOXGH VWGOLEK! XQVLJQHG FKDU JHW%\WHV)URP7H[W)LOH FKDU V])LOH1DPH LQW Q  LQW PDLQ YRLG ^ XQVLJQHG FKDU SE LQW LQ

`

SE JHW%\WHV)URP7H[W)LOH IUDPHHWKW[W Q  SULQWI $UUD\ IUDPH?Q  IRU L  LQ L ^ SULQWI [ SE>L@  ` UHWXUQ 

XQVLJQHG FKDU JHW%\WHV)URP7H[W)LOH FKDU V])LOH1DPH LQW Q ^ GH¿QH 0$;&+$5[5,*$  GH¿QH 0$;5,*+(  ),/( IS FKDU EXIIHU>0$;&+$5[5,*$@ FKDU V]%XIIHU>0$;5,*+( 0$;&+$5[5,*$@ XQVLJQHG FKDU SE\WH FKDU FK XQVLJQHG FKDU E\W  LQW O  EOQ$QFRUD  VWV  L  M 

Q  V]%XIIHU>@  IS IRSHQ V])LOH1DPH U  ZKLOH EOQ$QFRUD ^ EOQ$QFRUD  LI IHRI IS __ IJHWV EXIIHU 0$;&+$5[5,*$ IS

1

18// EOQ$QFRUD 

Protocollo ARP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica



107

PROGRAMMA



                                         `

HOVH ^ EXIIHU>VWUOHQ EXIIHU @ VWUFDW V]%XIIHUEXIIHU  `

? 

` IFORVH IS  SULQWI ),/(?QV?Q?E\WHV OHWWL?QV]%XIIHU  O VWUOHQ V]%XIIHU  ZKLOH LO ^ FK V]%XIIHU>L@ LI FK! $ FK = FK FK VZLWFK VWV ^ FDVH  LI FK!  FK  __ FK! D FK I ^ LI FK !  FK   E\W  FK    HOVH E\W  FK  D    VWV  ` EUHDN FDVH  LI FK!  FK  __ FK! D FK I ^ LI FK !  FK   E\W E\W  FK    HOVH E\W E\W  FK  D   LI M  SE\WH PDOORF   HOVH SE\WH UHDOORF SE\WHM 

SE\WHM E\W M VWV  ` EUHDN

` L

`

Q M UHWXUQ SE\WH

La funzione getBytesFromTextFile() ha il compito di leggere la sequenza Ascii delle coppie di caratteri esadecimali su un file di testo e restituire il vettore che poi viene stampato nel main(). La funzione accetta il nome del file fisico su disco e restituisce il vettore sottoforma di puntatore e la sua dimensione. La sequenza su disco può essere scritta su una o più righe, tipicamente con uno spazio che separa le coppie di caratteri esadecimali. I caratteri esadecimali possono essere scritti indifferentemente in minuscolo o maiuscolo (riga 49). Il breve algoritmo di conversione (righe 48÷73) usa un semplice automa a stati finiti con due stati codificati sulla variabile sts.

2

Pacchetto IP

Il compito fondamentale di IP è quindi di instradare i messaggi sulla rete tramite tabelle di instradamento e algoritmi di routing, adottando un preciso schema di indirizzamento per gli indirizzi di livello 3. Inoltre ha anche funzioni di frammentazione e riassemblaggio dei messaggi, e di rilevazione (ma non correzione) degli errori. Un singolo pacchetto IP, detto anche datagramma IP, contiene tipicamente una PDU di livello superiore (per esempio TCP), che può essere ampia fino a 64 kB. Anche se IP è in grado di gestire pacchetti di tale di108

B2

Protocollo IP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

mensione, di fatto quasi sempre li frammenta in pacchettini più piccoli, di solito 1500 byte. Il formato del pacchetto IP è mostrato in figura: 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

Version

IHL

Service Type

Identification TTL

Total Length Flags

Protocol

i n t e s t a z i o n e

Fragment Offset Header checksum

Source IP address Destination IP address Options

d a t i

dati

Sia i campi, sia i byte nei campi, sia i bit all’interno dei byte sono inseriti in modo big endian: il primo byte a essere spedito (e ricevuto) è Version/IHL, all’interno del quale, per esempio, il valore 45h significa Version=4 e IHL=5. L’ampiezza minima dell’header IP vale 20 byte, ma ha una lunghezza variabile a causa del campo facoltativo Options. In ogni caso non supera i 60 byte. L’header IP è seguito dal campo dati (o payload) che contiene la PDU del protocollo di livello superiore (per esempio TCP). Il significato dei campi dell’header del pacchetto IP è il seguente (tra parentesi la dimensione in bit): • Version (4): è il numero di versione del protocollo IP che ha generato il pacchetto. Per IPv4 vale 4. • IHL (4, Internet Header Length): è la lunghezza dell’header IP, variabile in funzione del campo Options, espressa come numero di parole da 32 bit (4 byte). Il minimo IHL vale 5 (5 · 4=20 byte se il campo Options è lungo 0 byte), il massimo vale 15 (15 · 4=60 byte, se il campo Options è lungo 40 byte). Serve per «raggiungere» la parte dati e calcolarne la dimensione assieme al campo Total Length. • Service Type (8): campo a bit che specifica come un protocollo di livello superiore vuole che il pacchetto sia trattato; dopo varie ridefinizioni oggi i trattamenti sono codificati in RFC 3168, una codifica delle quali riguarda lo streaming in tempo reale della voce VoIP (Voice over IP). • Total Length (16): è la lunghezza del pacchetto IP (header + dati) espresso in byte; il pacchetto IP più ampio occupa quindi 216=65536 byte (64 kB), che può definirsi l’MTU di IP. Assieme a IHL serve per calcolare la dimensione dalla parte dati del datagramma IP (=Total Length – IHL · 4). • Identification (16): contiene un numero intero che identifica il pacchetto frammentato da IP; è usato per permettere il riassemblaggio di

2

Pacchetto IP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

RFC 3514: il bit del male Network Working Group S. Bellovin Request for Comments: 3514 AT&T Labs Research Category: Informational 1 April 2003 The Security Flag in the IPv4 Header Abstract Firewalls, packet filters, intrusion detection systems, and the like often have difficulty distinguishing between packets that have malicious intent and those that are merely unusual. We define a security flag in the IPv4 header as a means of distinguishing the two cases. 1. Introduction Firewalls, packet filters, intrusion detection systems, and the like often have difficulty distinguishing between packets that have malicious intent and those that are merely unusual. The problem is that making such determinations is hard. To solve this problem, we define a security flag, known as the “evil” bit, in the IPv4 [RFC791] header. Benign packets have this bit set to 0; those that are used for an attack will have the bit set to 1. [...] Osservare la data di questa RFC.

109

IP checksum L’Header checksum di un pacchetto IPv4 comprende le prime 10 parole da 16 bit dell’header IP, escludendo la parola riservata all’Header checksum: in tutto 9 word (a 16 bit). Un modo efficace di effettuare il calcolo consiste nell’eseguire la somma semplice delle 9 word, quindi se il risultato eccede i 16 bit considerare la parte troncata: a questa si somma il valore eccedente (carry). Infine si inverte il valore ottenuto con un NOT. Il ricevente calcola agevolmente l’integrità dell’header IP eseguendo il calcolo di checksum su tutte le 10 parole dell’header IP (compreso l’Header checksum): il risultato del calcolo dà 0 se l’header è integro; risulta diverso da 0 in caso di errore.







• •

• •

un pacchetto frammentato, dato che tutti i frammenti di uno stesso pacchetto originale hanno questo campo impostato con lo stesso valore. Flags (3): campo di bit che specifica se un pacchetto può essere frammentato o meno (bit1, DF, don’t fragment) e se si tratta dell’ultimo frammento di un pacchetto o del primo e/o unico frammento (bit2, MF, more fragment). Siccome il destinatario non sa il numero totale dei frammenti di un pacchetto e i frammenti possono anche arrivare fuori ordine, il ricevente riconosce l’ultimo frammento solo quando analizza questo bit. Se un datagramma IP che presenta DF=1 è più ampio dell’MTU della rete fisica su cui deve essere inoltrato (per esempio da un router), il pacchetto viene scartato e il router notifica al mittente l’errore tramite il protocollo ICMP (Internet Control Message Protocol). Fragment Offset (13): è il numero di sequenza di un frammento (in multipli di 8 byte). Dato che il campo occupa 13 bit, può numerare al massimo 213=8192 pacchettini (da 0 a 8191) da 8 byte l’uno, che è la dimensione minima di un pacchetto frammentato (in questo particolare caso i pacchettini devono essere numerati al massimo fino a 8188). Chi deve riassemblare il pacchetto originale fa scattare un timer alla ricezione del primo frammento: se il timer scade prima di aver ricevuto tutti i frammenti va segnalato al mittente con un messaggio ICMP. Si deve tenere presente che se il frammento di un pacchetto originale si presenta su un router che deve inoltrarlo su una rete il cui MTU è inferiore all’ampiezza della dimensione del frammento, il frammento viene a sua volta frammentato, e così via. TTL (4, Time to live): è un campo che viene decrementato a ogni passaggio (hop) del pacchetto su un router; quando il contatore arriva a zero il pacchetto viene scartato e il router notifica lo scarto al mittente con il protocollo ICMP. È uno dei pochi campi dell’header che viene modificato durante il cammino e ciò causa anche il ricalcolo del campo Header Checksum. Protocol (8): codifica che identifica il protocollo di routing o di livello superiore contenuto nel campo dati del pacchetto. La codifica valida a livello mondiale è gestita dallo IANA (Internet Assigned Numbers Authority). Header checksum (16): è un campo utilizzato per controllare che l’header IP sia corretto. Si nota che la somma di controllo riguarda solo l’intestazione del pacchetto, dato che IP demanda il controllo del pacchetto allo strato superiore (tipicamente TCP). Il calcolo è effettuato con il modo Internet checksum (cfr. Sistemi e reti, vol. 1, Controllo dell’errore). È uno dei pochi campi dell’header che può essere modificato durante il cammino, per esempio a causa di un decremento di TTL. Source address (32) e Destination address (32): sono gli indirizzi IP di mittente e destinatario, entrambi su 4 byte (32 bit); Options: è un campo facoltativo (presente solo se HIL>5), usato per fornire varie informazioni, tipo sicurezza e routing.

La lista dei protocolli più importanti trasportati da un datagramma IP nel campo Protocol: 110

B2

Protocollo IP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

ESEMPIO

Valore

Sigla

Protocollo

K

ICMP

Internet Control Message Protocol, RFC 792

K

IGMP

Internet Group Management Protocol, RFC 1112

K

TCP

Transmission Control Protocol, RFC 793

K

EGP

Exterior Gateway Protocol, RFC 888

K

IGP

Interior Gateway Protocol (variabile in base a quello adottato)

K

UDP

User Datagram Protocol, RFC 768

K

EIGRP

Enhanced Interior Gateway Routing Protocol (Cisco)

K

OSPF

Open Shortest Path First, RFC 1583

&K

IS-IS

Intermediate System To Intermediate System, RFC 1142

K

MPLS

Multiprotocol Label Switching, RFC 4023

Header IP Data la seguente sequenza esadecimale di byte che rappresenta un pacchetto IP, decodificarne l’intestazione.     I       HG  IH D HG  G H GI G F    DI II I  F F     EF F EG  

PROGRAMMA

Versione (byte 0 = 45h): 4, Ipv4. HIL(byte 0 = 45h): 5, no campo Options, lunghezza header=5 · 4=20 byte. Total length (byte 2-3 = 0028h): lunghezza del pacchetto = 40 byte (28h). Identification (byte 4-5 = 0f47h): 0f47h. Flags (byte 6 = 40h): 40h = 01000000b, cioè Flags=02h, DF=1. Il pacchetto non deve essere frammentato. Fragment offset (byte 6-7 = 4000h): 4000h = 0100000000000000b, cioè Offset = 0. TTL (byte 8 = 80h): conteggio impostato a 128 (80h). Protocol (byte 9 = 06h): in base alla codifica IANA, 06h = TCP. Il datagramma IP trasporta un pacchetto TCP. Header checksum (byte 10-11 = 91edh): l’IP Internet checksum vale 37357 (91edh). Source IP address (byte 12-15 =91fea0edh): 145.254.160.237 (91h.feh.a0h.edh). Destination IP address (byte 16-19 = 41d0e4dfh): 65.208.228.223 (41h.d0h.e4h.dfh). Dati (byte 20-39): PDU di TCP.

Header IP Data una sequenza di byte rappresentante un pacchetto IP, decodificare il contenuto del suo header con un programma in linguaggio C. 287387 ,S IUDPH     I       HG  IH D HG  G H GI G F    DI II I  F F     EF F EG   9HUVLRQ  +,/  7RWDO /HQJWK  ,GHQWL¿FDWLRQ  )ODJV  0)  ')  )UDJPHQW RIIVHW  77/  3URWRFRO K +HDGHU FKHFNVXP  6RXUFH ,S  'HVWLQDWLRQ ,S  씰

2

Pacchetto IP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

111

PROGRAMMA



112

La sequenza di byte del pacchetto IP è memorizzata in un file di testo (ip.txt), pertanto viene usata la funzione getBytesFromTextFile() implementata nel PROGRAMMA precedente (e qui inclusa). Un esempio di programma in linguaggio C potrebbe essere:                                                   

LQFOXGH LQFOXGH LQFOXGH LQFOXGH

VWGLRK! VWULQJK! VWGOLEK! JHW%\WHV)URP7H[W)LOHF

LQW PDLQ YRLG ^ XQVLJQHG FKDU SE LQW LQ XQVLJQHG FKDU E\WH XQVLJQHG LQW ZRUG SE JHW%\WHV)URP7H[W)LOH LSW[W Q  SULQWI ,S IUDPH?Q  IRU L  LQ L ^ SULQWI [ SE>L@  ` E\WH SE>@ !!  SULQWI ?Q9HUVLRQ GE\WH  E\WH SE>@ [I SULQWI ?Q+,/ GE\WH  ZRUG SE>@   SE>@ SULQWI ?Q7RWDO /HQJWK GZRUG  ZRUG SE>@   SE>@ SULQWI ?Q,GHQWL¿FDWLRQ GZRUG  E\WH SE>@ !!  SULQWI ?Q)ODJV G 0) G ') GE\WH E\WH!! E\WH!!  ZRUG SE>@   SE>@ SULQWI ?Q)UDJPHQW RIIVHW GZRUG [)))  E\WH SE>@ SULQWI ?Q77/ GE\WH  E\WH SE>@ SULQWI ?Q3URWRFRO [KE\WH  ZRUG SE>@   SE>@ SULQWI ?Q+HDGHU FKHFNVXP GZRUG  SULQWI ?Q6RXUFH ,S GGGGSE>@SE>@SE>@SE>@  SULQWI ?Q'HVWLQDWLRQ ,S GGGGSE>@SE>@SE>@SE>@  UHWXUQ  `

B2

Protocollo IP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

ESEMPIO

Frammentazione IP Un router riceve un datagramma IP ampio 5000 byte (Total Length = 5000) e lo deve inoltrare su una rete Ethernet con MTU pari a 1500 byte. Elencare i frammenti creati con i valori dei campi significativi per la frammentazione. Si ipotizza IHL=5 (pacchetto senza Options, cioè con header ampio 20 byte). La dimensione massima del pacchetto IP circolante sulla rete Ethernet vale 1500, di cui 1500 – 20 = 1480 utilizzabili per il campo dati (payload). Siccome 1480 è un multiplo di 8, la dimensione del payload del frammento è accettabile: 1480/8 = 185 (altrimenti si sarebbe dovuto scegliere un’ampiezza inferiore multipla di 8). I 5000 byte originali devono essere ripartiti in frammenti ampi 1480 byte, per un totale di 5000/1480=3,37, quindi 3 frammenti da 1480 byte più il frammento finale ampio 5000 % 1480 = 560 byte (il resto della divisione precedente). Il router quindi assegna, su base locale, il valore 23 al campo Identification, un valore ancora non utilizzato per i propri pacchetti. In definitiva i quattro frammenti, con i campi significativi, risultano:

3

Frammento

Total Lenght

Identification

DF

MF

Fragment Offset

0

20 + 1480

23

0

1

0

1

20 + 1480

23

0

1

185

2

20 + 1480

23

0

1

370

3

20 + 560

23

0

0

555

Protocollo ICMP

Il protocollo ICMP (Internet Control Message Protocol, RFC 792) è dichiarato di livello 3 Network di TCP/IP, anche se è incapsulato all’interno di datagrammi IP, a differenza di ARP ma come TCP, con un valore di IP Protocol = 1 (vedi tabella precedente). IP usa ICMP in varie occasioni, spesso su iniziativa dei router, che segnalano agli host alcune situazioni anomale o condizioni d’errore durante l’espletamento delle proprie funzioni. Infatti IP è un protocollo disconnesso, ovvero senza controllo dell’errore e senza consegna garantita dei pacchetti (protocollo di tipo best effort, ovvero del tipo “faccio il meglio che posso”). ICMP aiuta IP ad affrontare le situazioni d’errore (che non è progettato per risolvere) attraverso delle segnalazioni, tra cui si ricordano quelle direttamente utilizzate per indicare le condizioni anomale già analizzate descrivendo il protocollo IP: • Quando un pacchetto IP non può essere frammentato ma deve «passare» attraverso una rete con MTU inferiore alla sua ampiezza, il pacchetto viene scartato e il router invia al mittente un messaggio ICMP Destination Unreachable-Fragmentation Needed And DF Set. • Quando il timer per riassemblaggio scade senza aver ricevuto tutti i frammenti, il pacchetto originale viene scartato e il router invia al mittente un messaggio ICMP Time Exceeded-Fragment reassembly time exceeded.

3

Protocollo ICMP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

113

• Quando un router, abbassando il TTL di un pacchetto IP in transito, arriva a zero lo scarta, ma notifica al mittente un messaggio ICMP Time Exceeded-Time To Live Exceeded in Transit.

7 6 54321 0 7 6 5 43210

Type

Code

Inoltre ICMP segnala problemi abbastanza tipici, come per esempio quando un router non riesce a individuare un cammino per una rete o un host di destinazione: il mittente riceve un messaggio ICMP Destination Unreachable-Destination network unreachable o Destination host unreachable. I messaggi ICMP spesso non vengono esibiti dai programmi applicativi che usano IP, come per esempio i browser per la navigazione web: le applicazioni, infatti, mascherano questi messaggi d’errore con proprie versioni del messaggio o ponendo rimedio alla segnalazione con soluzioni alternative. Le segnalazioni ICMP avvengono tramite l’invio di un pacchetto abbastanza semplice (tra parentesi la dimensione in bit): • • • • •

Checksum rest of header

dati

Type (8): codifica ICMP del tipo di messaggio da consegnare. Code (8): sottotipo per il tipo di messaggio; precisa l’indicazione. Checksum (16): somma di controllo del pacchetto. rest of header (32): parte dell’header disponibile per altre informazioni. dati: payload di ICMP; tipicamente contiene tutto l’header IP del pacchetto che è coinvolto nella segnalazione, più otto byte del campo dati di quel pacchetto. Il campo è di ampiezza variabile perché l’intestazione IP è variabile.

Le codifiche più importanti per Type/Code sono riportate in tabella: Type

Descrizione

0 3

Echo Reply Destination Unreachable

4 5

Source Quench Redirect Message

6 8 9

Alternate Host Address Echo Request Router Advertisement

114

Code 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 0 1 2 3 0 0 0

B2

Messaggio Echo reply (usato dal programma ping) Destination network unreachable Destination host unreachable Destination protocol unreachable Destination port unreachable Fragmentation required, and DF flag set Source route failed Destination network unknown Destination host unknown Source host isolated Network administratively prohibited Host administratively prohibited Network unreachable for TOS Host unreachable for TOS Communication administratively prohibited Host Precedence Violation Precedence cutoff in effect Source quench (congestion control) Redirect Datagram for the Network Redirect Datagram for the Host Redirect Datagram for the TOS & network Redirect Datagram for the TOS & host Echo request (usato dal programma ping) Router Advertisement

Protocollo IP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

Router Solicitation Time Exceeded

12

Parameter Problem: Bad IP header

13 14 15 16 17 18 30

Timestamp Timestamp Reply Information Request Information Reply Address Mask Request Address Mask Reply Traceroute

ESEMPIO

10 11

0 0 1 0 1 2 0 0 0 0 0 0 0

Datagramma ICMP Data la sequenza di byte esadecimali seguente, decodificare il datagramma IP contenuto:    I 

    

 F   

F D   

H   

E   

   

   

   

 F D 

D  E 

  F 

F  G 

D  H 

Il primo byte (byte 0 = 45h) indica la coppia Version/ HIL dell’header di IP, cioè 45h significa 4=IPv4 e

3.1

Router discovery/selection/solicitation TTL expired in transit Fragment reassembly time exceeded Pointer indicates the error Missing a required option Bad length Timestamp Timestamp reply Information Request Information Reply Address Mask Request Address Mask Reply Information Request

IHL=5, cioè nessuna Options e quindi header IP lungo 5 · 4= 20 byte. Si nota che il campo Protocol vale 1 (byte 9 = 1), che la codifica IANA riserva a ICMP. Il 21simo byte (byte 20 = 8) è perciò la parte dati del pacchetto IP, ovvero il primo byte del pacchetto ICMP. Esso coincide con il campo Type=8, cioè si tratta di un ICMP Echo Request con Code = 0. Si nota che il mittente IP ha indirizzo 192.168.0.114 e il destinatario IP ha indirizzo 192.168.0.1, rispettivamente i byte 12÷15 e 16÷19.

ICMP routing

Oltre a segnalare condizioni d’errore ICMP consente di realizzare un sottile strato di routing per gli host che, normalmente, realizzano il livello 3 Network in modo abbastanza elementare rispetto allo strato di Rete implementato sui router. Per esempio, un router può ricevere un pacchetto IP da un host e, consultando la propria TdI, può rendersi conto che l’host non ha deciso correttamente l’instradamento: un altro router è più indicato per ricevere quel pacchetto. In questo caso il router notifica all’host «distratto» il nuovo router che deve considerare come ottimale con un messaggio ICMP Redirect Message contenente l’indirizzo IP del router su cui effettuare la redirezione nel campo rest of header. In questo modo la rudimentale TdI dell’host può aggiornarsi con una nuova regola temporanea. Inoltre, tra gli ultimi messaggi a essere stati introdotti nel protocollo ICMP, si trovano Address Mask Request e Address Mask Reply, per permettere a un host di richiedere e quindi impostare automaticamente uno dei parametri base per il routing degli host, ovvero la subnet mask usata nella rete di appartenenza (cfr. Subnetting).

3

Protocollo ICMP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

115

PROGRAMMA

Pacchetto ICMP Data una sequenza di byte rappresentante un pacchetto IP, scrivere un programma in linguaggio C che verifica se si tratta di un pacchetto ICMP. (In Appendice la versione per Java) 287387 ,S IUDPH    F H E     D  F D   F D      F              D E F G H I                 +,/  SHUFLz L GDWL ,3 LQL]LDQR GDOO¶LQGLFH  ,3 3URWRFRO K 3DFFKHWWR ,&03  7\SH K &RGH K (FKR 5HTXHVW Per verificare se il datagramma IP trasporta ICMP bisogna verificare se il campo Protocol dell’header IP contiene il valore 1 (vedi Tabella pag. 111 per il campo Protocol di IP). Quindi bisogna «saltare» l’header IP calcolandone la dimensione (HIL*4) e decodificare i primi due byte del campo dati di IP, che coincidono con la coppia Type/Code di ICMP. Un esempio di programma in linguaggio C potrebbe essere:                                             

116

LQFOXGH LQFOXGH LQFOXGH LQFOXGH

VWGLRK! VWULQJK! VWGOLEK! JHW%\WHV)URP7H[W)LOHF

GH¿QH ,335272&2/B,&03 [ GH¿QH ,&03B7L@  ` E\WH SE>@ [I LG[,3'DWD E\WH  SULQWI ?Q+,/ G SHUFLz L GDWL ,3 LQL]LDQR GDOO¶LQGLFH GE\WH LG[,3'DWD  E\WH SE>@ SULQWI ?Q,3 3URWRFRO [KE\WH  LI E\WH ,335272&2/B,&03 ^ XQVLJQHG FKDU 7\SH &RGH SULQWI ?Q?W3DFFKHWWR ,&03 [ E\WH  SE>LG[,3'DWD@ 7\SH SE>LG[,3'DWD@ &RGH SULQWI ?Q?W7\SH [K &RGH [K7\SH&RGH  LI 7\SH ,&03B7@ ^^[[[II`^[F[[IIII`^[H[F[IIIIII`` W\SHGHI VWUXFW ^ XQVLJQHG FKDU DEFG XQVLJQHG LQW LS XQVLJQHG LQW QHWLG ` ,3,1)2 ,3,1)2 ,S>@

 ,3 GRWWHG  ,3 GHFLPDOH  QHW,G FRUULVSRQGHQWH DOOD FODVVH GL DSSDUWHQHQ]D

LQW PDLQ YRLG ^ LQW LM  , TXDWWUR LQGLUL]]L GDWL ,S>@D  ,S>@E  ,S>@F  ,S>@D  ,S>@E  ,S>@F  ,S>@D  ,S>@E  ,S>@F  ,S>@D  ,S>@E  ,S>@F 

,S>@G ,S>@G ,S>@G ,S>@G

   

L  IRU L  L L

B3

Indirizzamento IP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica



PROGRAMMA



                           `

^ IRU M MM ^ ,S>L@LS ,S>L@D [  ,S>L@E [  ,S>L@F [  ,S>L@G LI ,S>L@D FODVVL,S>M@PDVN FODVVL,S>M@OHDGLQJ ^ ,S>L@QHWLG ,S>L@LS FODVVL,S>M@QHWPDVN SULQWI ?QGGGG,S>L@D,S>L@E,S>L@F,S>L@G  SULQWI FODVVH F PDVN [ H QHW,G ; $ M FODVVL,S>M@QHWPDVN ,S>L@QHWLG  ` ` ` IRU L  L L ^ IRU M LMM ^ LI ,S>L@QHWLG ,S>M@QHWLG ^ SULQWI ?QGGGG,S>L@D,S>L@E,S>L@F,S>L@G  SULQWI  H GGGG VWHVVD UHWH,S>M@D,S>M@E,S>M@F,S>M@G  ` ` ` UHWXUQ 

Dopo aver memorizzato in una struttura dati ad hoc i valori caratteristici di classful (per le tre classi, maschere e leading bit corrispondenti, righe 2÷8), per analizzare gli indirizzi IP è sufficiente possederne una versione in notazione decimale. La conversione è in evidenza (riga 30). Il confronto per determinare la classe di appartenenza è il classico confronto «a maschera di bit» tra il primo byte dell’indirizzo, la maschera e i leading bit della classe (riga 31).

2

Instradamento classful

Lo schema di indirizzamento classful facilita il routing dei pacchetti, dato che dall’indirizzo IP destinazione si può estrarre velocemente la parte netId. (netId): se confrontato con il netId dell’indirizzo di una propria interfaccia, si può desumere immediatamente se l’indirizzo IP destinazione appartiene alla stessa rete di quell’interfaccia o meno. La regola di instradamento implicita a classful si sintetizza in: 1. Un pacchetto IP con indirizzo destinazione avente netId uguale al netId di

un proprio indirizzo IP può essere instradato direttamente, semplicemente inoltrandolo sulla stessa interfaccia alla quale il proprio indirizzo IP è associato. 2. Un pacchetto IP con indirizzo destinazione avente netId diverso dal netId di una qualsiasi propria interfaccia, deve essere inoltrato a una stazione intermedia detta gateway di default (a volte indicato come next hop). Vediamo ora come si mette in pratica l’instradamento implicito classful in un caso reale ma generalizzabile. Per esempio, siano date due reti di classe C (196.13.1.x e 196.13.2.x) da interconnettere con un router. Chiamiamo le due reti net A e net B, e A1,

2

Instradamento classful

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

127

..., An e B1, ..., Bm gli host connessi. I numeri n e m non possono superare 256, essendo reti di classe C. Il router R deve avere due interfacce, e quindi due indirizzi IP, uno appartenente a net A e l’altro appartenente a net B. La netmask di entrambe le reti è quella di classe C, ovvero 255.255.255.0: internet classful net A Netmask 255.255.255.0

net B Netmask 255.255.255.0 R

196.13.1.254

196.13.2.254

B1

A1

Bm

An 196.13.1.1

A2

196.13.2.1

B2

196.13.1.2

Vediamo l’instradamento di un pacchetto IP spedito da A1 verso A2. Il routing attuato da A1 è il seguente: 1. Estrazione del netId dal proprio indirizzo e dall’indirizzo di A2: netId(A1) = (196.13.1.1 AND 255.255.255.0) = 196.13.1.0; netId(A2) = (196.13.1.2 AND 255.255.255.0) = 196.13.1.0. 2. Confronto dei due netId: sono uguali, cioè consegna diretta. Basta inoltrare il pacchetto sulla stessa interfaccia, con il MAC destinatario di A2 eventualmente recuperato con ARP, e il pacchetto giungerà a destinazione. Vediamo ora l’instradamento di un pacchetto IP spedito da A1 verso B1. Il routing attuato da A1 è il seguente: 1. Estrazione del netId dal proprio indirizzo e dall’indirizzo di B1:

netId(A1) = (196.13.1.1 AND 255.255.255.0) = 196.13.1.0 netId(B1) = (196.13.2.1 AND 255.255.255.0) = 196.13.2.0 2. Confronto dei due netId: sono diversi, quindi consegna indiretta tramite gateway di default. Il pacchetto va inviato al gateway di default (R) inbustandolo con l’indirizzo MAC di R (eventualmente recuperato previo ARP). Si deduce che i parametri fondamentali di un host per il routing classful sono la netmask (della rete di appartenenza) e l’indirizzo IP di un gateway di default. Benché rudimentale rispetto ai router, gli host utilizzano una tabella di routing che sintetizza il ragionamento dell’instradamento appena esposto. Per esempio, per l’host A1 la TdI viene rappresenta nel seguente modo: ,QGLUL]]R   128

B3

0DVN  

*DWHZD\  

Indirizzamento IP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

,QWHUIDFFLD  

Le righe della tabella sono due, e sono rispettivamente le due regole per la consegna tramite gateway di default (o consegna indiretta) e la regola per la consegna diretta. Il processo di routing per la destinazione A2 descritto nel paragrafo precedente viene attuato tramite la TdI nel seguente modo, ricordando che l’indirizzo destinazione di A2 vale 196.13.1.2: a. Si prende in considerazione la prima riga della TdI e si effettua l’AND

PROGRAMMA

tra l’indirizzo destinazione e il valore della colonna Mask (0.0.0.0): 196.13.1.2 AND 0.0.0.0 = 0.0.0.0(NB). Siccome il risultato coincide con il valore della colonna Indirizzo la regola è vera (consegna indiretta). b. Si ripete il procedimento per la seconda riga: si effettua l’AND tra l’indirizzo destinazione e il valore della colonna Mask (255.255.255.0): 196.13.1.2 AND 255.255.255.0 = 196.13.1.0. Anche in questo caso la regola è vera, ma siccome nel valore Mask i bit a uno sono più numerosi (rispetto al valore Mask della regola precedente), tra le due si sceglie questa (consegna diretta).

NB. Si nota che, quando presente, la regola che contiene come valore di Mask 0.0.0.0, è una regola sempre vera per ogni indirizzo (da instradare). Questa regola è anche detta «regola per pacchetti stranieri» o «dell’ultima opportunità».

Instradamento classful Data la TdI dell’host A del caso appena descritto, realizzare l’instradamento di un pacchetto diretto a B5 (196.13.2.5) con un programma in linguaggio C. 287387 ,QGLUL]]R 0DVN *DWHZD\       5HJROD Q SHU  YHUD 5HJROD Q SHU  IDOVD

8VH  

Dopo aver convenientemente descritto la TdI dell’host A in una struttura dati (righe 2÷11), si utilizza una funzione che converte un indirizzo dotted in forma decimale (righe 43÷49). Seguendo le indicazioni del testo, un esempio di programma in linguaggio C potrebbe essere:                      

LQFOXGH VWGLRK! W\SHGHI VWUXFW ^ XQVLJQHG FKDU ,D,E,F,G  FRORQQD ,QGLUL]]R XQVLJQHG FKDU 0D0E0F0G  FRORQQD 0DVN XQVLJQHG FKDU *D*E*F*G  FRORQQD *DWHZD\ QH[W KRS XQVLJQHG FKDU 8D8E8F8G  FRORQQD 8VH LQWHUIDFFLD G¶XVFLWD ` 7', 7', WGL+RVW>@ ^ ^    ` ^   ` ` XQVLJQHG LQW 'RWWHG7R'HFLPDO XQVLJQHG FKDU DXQVLJQHG FKDU EXQVLJQHG FKDU FXQVLJQHG FKDU G  LQW PDLQ YRLG ^ LQW L XQVLJQHG FKDU DEFG SULQWI ,QGLUL]]R?W0DVN?W?W*DWHZD\?W?W8VH?Q  IRU L  LVL]HRI WGL+RVW VL]HRI 7',  L

2

 VWDPSD GHOOD 7G,

Instradamento classful

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica



129



PROGRAMMA



                          

SULQWI GGGG?WGGGG?WGGGG?WGGGG?Q WGL+RVW>L@,DWGL+RVW>L@,EWGL+RVW>L@,FWGL+RVW>L@,G WGL+RVW>L@0DWGL+RVW>L@0EWGL+RVW>L@0FWGL+RVW>L@0G WGL+RVW>L@*DWGL+RVW>L@*EWGL+RVW>L@*FWGL+RVW>L@*G WGL+RVW>L@8DWGL+RVW>L@8EWGL+RVW>L@8FWGL+RVW>L@8G  D  E  F  G   ,QGLUL]]R GD LQVWUDGDUH IRU L  LVL]HRI WGL+RVW VL]HRI 7',  L ^ XQVLJQHG LQW X SULQWI 5HJROD QG SHU GGGG LDEFG  X 'RWWHG7R'HFLPDO WGL+RVW>L@0DWGL+RVW>L@0EWGL+RVW>L@0FWGL+RVW>L@0G  X X 'RWWHG7R'HFLPDO DEFG 

` `

LI X 'RWWHG7R'HFLPDO WGL+RVW>L@,DWGL+RVW>L@,EWGL+RVW>L@,FWGL+RVW>L@,G SULQWI  YHUD?Q  (OVH SULQWI  IDOVD?Q 

UHWXUQ 

XQVLJQHG LQW 'RWWHG7R'HFLPDO XQVLJQHG FKDU DXQVLJQHG FKDU EXQVLJQHG FKDU FXQVLJQHG FKDU G ^ XQVLJQHG LQW XO

`

XO D [  E [  F [  G UHWXUQ XO

Le righe (regole) della TdI vengono analizzate con il ciclo a righe 25÷37. Per ogni regola, per verificare se è vera sull’indirizzo specificato (a.b.c.d): a) si trasforma in decimale il valore Mask della regola (riga 30); b) si effettua la maschera AND con l’indirizzo dato (riga 31); c) confronta il risultato con il valore Indirizzo della regola, a sua volta trasformato in decimale (riga 33).

2.1

Problemi dell’indirizzamento classful

L’intero spazio degli indirizzi potenziale di IPv4, 232 = 4.294.967.296, cioè più di 4 miliardi di indirizzi disponibili, se suddiviso con lo schema classful è rappresentabile graficamente tra le classi:

Classe C Classe A Classe B

La gerarchia degli indirizzi descritta dal modo classful, a causa dell’enorme e anche imprevista diffusione di TCP/IP, è diventata troppo rigida, infatti: 130

B3

Indirizzamento IP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

• Internamente alle organizzazioni che fanno richiesta di indirizzi IP si sprecano molti indirizzi: ogni sottorete interna, fatalmente, non sfrutta tutti i numeri di rete acquistati. • Gli ISP, a loro volta, sono costretti a distribuire blocchi di indirizzi sovradimensionati rispetto alle esigenze del richiedente. Tipico il caso delle reti di classe B, le prime a soffrire del problema: molte organizzazioni posseggono più di 256 macchine (rete di classe C), ma molte meno di 65536 (rete di classe B). • Infine, le reti di classe A sono troppo grandi (224= 16777216 indirizzi ognuna) e poche organizzazioni, in realtà, sono all’altezza di richiederne un lotto (a oggi una sessantina, l’ultima assegnazione è del 2010). Tutto ciò produce anche l’effetto di costringere i router degli ISP a usare tabelle di instradamento inutilmente ampie (per esempio, nel caso di instradamento di numerose reti di classe C assegnate alla medesima organizzazione). Per rimediare a questi problemi l’IETF ha introdotto, a partire dal 1993, un nuovo schema di indirizzamento per IPv4, allarmato anche dalla realistica prospettiva di un esaurimento degli indirizzi IP, effettivamente accaduta il 3 febbraio 2011. Il nuovo schema di indirizzamento per IPv4 si chiama CIDR (Classless Inter-Domain Routing, RFC 1519) ed è quello attualmente in uso. Atraverso l’adozione progressiva della tecnica di subnetting su reti private e supernetting (CIDR) i problemi di classful sono stati arginati, in attesa dell’adozione di uno schema di indirizzamento radicalmente differente (cfr. Appendice. IPv6). Con le reti private e il subnetting si affronta il problema dello spreco degli indirizzi all’interno delle organizzazioni: ogni host non necessita più di un indirizzo IP classful. Con il supernetting/CIDR si affronta il problema dello spreco degli indirizzi dovuto alla rigidità delle classi classful, consentendone l’aggregazione in base alle esigenze dell’organizzazione che ne fa richiesta.

3

Reti fisiche e logiche Il subnetting prevede normalmente che ogni subnet coincida con una rete fisica, per esempio una switched LAN. In realtà due host appartenenti a due subnet differenti possono essere anche direttamente connessi sulla stessa rete fisica, per esempio collegati allo stesso switch. Tuttavia una comunicazione tra i due host dovrà passare necessariamente dal gateway che connette le due subnet. Alla prima trasmissione di un host verso l’altro, il gateway invierà al mittente un messaggio ICMP Redirect per informare l’host di spedire direttamente i pacchetti sull’interfaccia di rete.

Subnetting

Il problema della suddivisione di reti classful in più sottoreti fisiche all’interno di una stessa organizzazione è stato affrontato con il subnetting (RFC 950). Il subnetting diventa molto efficace se applicato alle cosiddette reti private (Private Internets, RFC 1918), ovvero a lotti di indirizzi IP destinati esclusivamente a indirizzare host che non partecipano direttamente alla rete Internet mondiale. Un’organizzazione quindi non deve più richiedere lotti di indirizzi classful per ogni sottorete che intende realizzare ed è libera di utilizzare uno (o più) di questi lotti speciali per assegnare indirizzi IP alle proprie macchine in modo del tutto autonomo. Gli host locali potranno partecipare, sebbene «indirettamente», alla rete Internet mondiale attraverso alcune stazioni router con interfacce sia sulla rete privata, sia sulla rete pubblica (cfr. Sistemi e reti, vol. 3, Internetworking. NAT, Proxy).

3

Subnetting

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

131

Così facendo si configura un apparente paradosso: milioni di macchine che operano in Internet hanno lo stesso indirizzo IP (per esempio 192.168.0.1). Le reti private hanno anche introdotto il concetto di intranet, sostanzialmente LAN organizzate sul modello TCP/IP. I lotti di indirizzi IP riservati per le reti private e sottratti alla distribuzione (e alla circolazione) su Internet sono: range IPv4

netmask



·







·







· 

n. indirizzi

1 rete di classe A

20

16 reti di classe B contigue

16

256 reti di classe C contigue

2 = 16.777.216



classful

24

2 = 1.048.576 2 = 65.536

Ora è possibile scegliere liberamente il lotto (o pool) di indirizzi privati più idoneo alle caratteristiche della rete da organizzare, decidendo per ogni sottorete distinta un valore detto subnet mask, del tutto analogo alla netmask, ma con una quantità consecutiva di «uni» tale da «ricoprire» la parte netId degli indirizzi e parte della porzione hostId. I rimanenti bit finali rimarranno come al solito, tutti a zero. In questo modo, con i valori netmask e subnet mask un indirizzo IP si suddivide in tre parti: netId, subnetId e hostId: netmask 11111111111111110000000000000000

classful

netld

netld

subnetting

hostld

subnetld

hostld

11111111111111111111110000000000

subnet mask

ESEMPIO

Il valore subnetId ora ha il compito di numerare le sottoreti operanti all’interno della rete privata; per ogni sottorete saranno disponibili tanti host quanti ne prevede la parte hostId. Con il subnetting il meccanismo di routing implicito di classful rimane invariato. L’unica differenza riguarda il fatto che ogni host deve essere configurato specificando la subnet mask di appartenenza (invece della sola netmask della classe come in classful). Subnetting Si deve organizzare un piano degli indirizzi in un’organizzazione che prevede tre gruppi di macchine operanti su settori differenziati, l’uno da 50 host, il secondo da 30, il terzo da 20. Dai dati forniti dal testo si determina che il numero totale degli host da organizzare è 100, mentre le sottoreti previste sono 3. La sottorete più ampia dovrà indirizzare 50 host. La scelta del lotto di indirizzi privati ricade all’interno delle reti di classe C, che possono indirizzare fino a 256 host, numero sufficiente per soddisfare la richiesta del testo (100 host). Tra le 256 reti private di classe C si sceglie la prima, 192.168.0.0 (netmask 255.255.255.0). In questo modo rimangono a disposizione per il subnetting gli ultimi 8 bit (hostId). Dovendo organizzare 3 sottoreti, sono sufficienti 2 bit di subnetId. Infatti 21 < 3 < 22, cioè 1 bit è troppo poco, consente solo 2 sottoreti, mentre con 2 bit si possono ottenere 4 sottoreti: 00, 01, 10, 11. Di contro, alla parte hostId rimangono 8 – 2 = 6 bit, per un totale teorico di 26 = 64 host per sottorete. Questo 씰 soddisfa la richiesta della dimensione massima della sottorete riportata dal testo (50 macchine).

132

B3

Indirizzamento IP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

ESEMPIO



In definitiva il piano degli indirizzi prevede una subnet mask di lunghezza pari a 26 bit a 1, e la rete suddivisa in subnet può essere espressa come 192.168.0.0 con subnet mask 255.255.255.192. Si nota, infatti, che 26 bit a 1 (subnet mask) e 6 bit a 0 (hostId) si rappresentano, a quartetti, come: 11111111 . 11111111 . 11111111 . 11000000

255

.

255

.

255

.

192

Naturalmente le due sottoreti devono essere interconnesse con un router R che deve avere almeno tre interfacce, una per ogni subnet: subnetting subnet mask 255.255.255.192 subnet B indirizzi: da: 192.168.0.64 a: 192.168.0.127

subnet A indirizzi: da: 192.168.0.0 a: 192.168.0.63

192.168.0.62

R

subnet C indirizzi: da: 192.168.0.128 a: 192.168.0.191

192.168.0.190

192.168.0.126 C1 C2 A1 A50

B1

C20

B30

192.168.0.130 A2

B2

192.168.0.2

192.168.0.66

La rete ha quindi subnet mask = 255.255.255.192, lunghezza subnetId=2 e lunghezza hostId=6. Le quattro subnet avranno i seguenti valori (l’ultima non sarà utilizzata): subnet A subnetId =  da:     a:     subnet B subnetId =  da:     a:     subnet C subnetId =  da:     a:     subnet D subnetId =  da:     a:    

3

Subnetting

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

133

PROGRAMMA

Calcolo delle subnet Dato un indirizzo IP privato e una subnet mask in formato CIDR (direttamente il numero dei bit a 1), calcolare e stampare tutte le subnet disponibili. 287387 5HWH SULYDWD GHO JUXSSR  QHWPDVN  6XEQHW 0DVN  VXEQHWLG  6XEQHW GLVSRQLELOL     Per ridurre il numero di righe del programma, si forniscono i due dati (indirizzo IP privato e subnet mask) direttamente nel codice (hard coded), righe 17÷18. Per visualizzare la subnetId in binario, si usa la funzione DectoszBin(), qui solo inclusa, ma già riportata nel PROGRAMMA. Autonegoziazione. Seguendo le indicazioni del testo, un esempio di programma in linguaggio C potrebbe essere:                                      

134

LQFOXGH VWGLRK! LQFOXGH GHFWRV]ELQF W\SHGHI VWUXFW ^ XQVLJQHG FKDU LGLG  LGHQWL¿FDWLYL FODVVL SULYDWH XQVLJQHG LQW QHWPDVNOHQ  OXQJKH]]D QHWPDVN ` 35,9$7(,3 35,9$7(,3 ,SS>@ ^^`^`^``

LQW PDLQ YRLG ^ LQW LLG[ XQVLJQHG FKDU DEFGVXEQHWOHQKRVWOHQ XQVLJQHG LQW VXEQHWPDVN VXEQHWLG X FKDU V]%LQ>@ D  E  F  6XEQHWPDVN 

G 

LG[  IRU L LL LI D ,SS>L@LG LG[ LI LG[  UHWXUQ 

 LQGLUL]]R ,3 SULYDWR GD XVDUH  VXEQHW PDVN GD DSSOLFDUH

L

 JUXSSR SULYDWR LQGLYLGXDWR

VXEQHWOHQ VXEQHWPDVN  ,SS>LG[@QHWPDVNOHQ LI VXEQHWPDVN,SS>LG[@QHWPDVNOHQ UHWXUQ  KRVWOHQ   VXEQHWPDVN VXEQHWLG VXEQHWOHQ 'HFWRV]%LQ VXEQHWLGVXEQHWOHQV]%LQ  SULQWI 5HWH SULYDWD GHO JUXSSR GGGG QHWPDVN G ?Q ,SS>LG[@LG,SS>LG[@LG,SS>LG[@QHWPDVNOHQ  SULQWI 6XEQHW 0DVN G VXEQHWLG V?QVXEQHWPDVNV]%LQ  SULQWI 6XEQHW GLVSRQLELOL?Q  IRU L LVXEQHWLGL ^ X L  KRVWOHQ

B3

Indirizzamento IP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica



PROGRAMMA



         

VZLWFK LG[ ^ FDVH  SULQWI GGGG?Q ,SS>LG[@LG X [II !! X [II !! X [II  EUHDN FDVH  SULQWI GGGG?Q ,SS>LG[@LG,SS>LG[@LG X [II !! X [II  EUHDN FDVH  SULQWI GGGG?Q ,SS>LG[@LG,SS>LG[@LG,SS>LG[@LG X [II  EUHDN `

   `   UHWXUQ   `

Con le righe 21÷22 si individua il lotto della rete privata impostata. Con la riga 25 si calcola il n. di bit riservati alla subnetId. Con la riga 28 si calcola il n. di bit riservati all’hostId. Con la riga 29 si calcola il valore della subnetId, che coincide con il numero di subnet disponibili, come 2subnetlen, e usando l’operatore di shift a sinistra () alle righe 41, 44 e 47.

4

Instradamento con subnetting

Con il subnetting vengono introdotte alcune notazioni speciali (Special addresses, RFC 1009) che, in modo conciso, significano altrettante condizioni relativamente agli indirizzi IP. Scrivendo l’indirizzo IP nella forma ^QHW,G KRVW,G` nel modo classful oppure ^QHW,G VXEQHW,G KRVW,G` nel modo subnetting, e assumendo che  significhi «bit tutti a zero» e  significhi «bit tutti a 1» quando presenti nei campi netId, subnetId o hostId, si hanno i seguenti casi: (a) ^ ` This host on this network. Utilizzabile come indirizzo IP sorgente, indica genericamente un host che non ha (ancora) un indirizzo IP. Si scrive anche 0.0.0.0. (b) ^ KRVW,G` Specified host on this network. Utilizzabile come indirizzo IP sorgente, indica un preciso host sulla propria rete (indeterminata) di appartenenza. (c) ^ ` Limited broadcast. Utilizzabile come indirizzo IP destinazione, il pacchetto deve essere in-

4

Instradamento con subnetting

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

135

viato a tutti gli host di una rete o subnet, ma mai ad altre. Si scrive anche 255.255.255.255. (d) ^QHW,G ` Directed broadcast to specified network. Utilizzabile come indirizzo IP destinazione, il pacchetto deve essere inviato a tutti gli host della rete classful indicata in netId. (e) ^QHW,G VXEQHW,G ` Directed broadcast to specified subnet. Utilizzabile come indirizzo IP destinazione, il pacchetto deve essere inviato a tutti gli host della subnet indicata in subnetId, a sua volta appartenente alla rete indicata in netId. (f) ^QHW,G  ` Directed broadcast to all subnets of network. Utilizzabile come indirizzo IP destinazione, il pacchetto deve essere inviato a tutti gli host di tutte le subnet della rete specificata in netId. (g) ^ DQ\` Internal host loopback address. Indirizzo di loopback (cfr. Sistemi e reti, vol. 1, Applicazioni). Utilizzabile sia come indirizzo sorgente che destinazione di un pacchetto, non viene passato sulla rete fisica. Classico indirizzo di loopback è 127.0.0.1, indicato anche come localhost. (h) ^QHW,G ` Specified network. Non utilizzabile come indirizzo IP. Indica la rete specificata in netId. (i) ^QHW,G VXEQHW,G ` Specified subnet. Non utilizzabile come indirizzo IP. Indica la subnet specificata in subnetId della rete specificata in netId. Queste notazioni sono estremamente utili, come si vedrà, soprattutto per il routing, ma introducono una limitazione: negli indirizzamenti ottenuti con subnet non si possono più usare gli indirizzi che indicano la rete, come prescritto nelle notazioni (h) e (i), né gli indirizzi di broadcast diretto, come indicato nelle notazioni (d), (e) e (f). In sostanza, una volta definita una subnet si ha a disposizione il suo nome (nella forma ^QHW,G VXEQHW,G `) e il suo intero gruppo di host (nella forma ^QHW,G VXEQHW,G `), ma questi due indirizzi non possono essere assegnati a delle stazioni della subnet. Per esempio, nella prima subnet della rete di classe C 192.168.0.0 con netmask 255.255.255.192 (vedi ESEMPIO precedente), i due indirizzi 192.168.0.0 e 192.168.0.63 non possono essere assegnati a delle stazioni, perché indicano rispettivamente il nome della subnet e tutti i 62 host della subnet. Ora per un host instradare i pacchetti IP in una rete su cui è stato effettuato il subnetting diventa abbastanza sistematico, tenendo presente le regole di consegna diretta (per esempio se l’indirizzo IP di destinazione sta nella stessa sottorete del mittente) e indiretta (se l’indirizzo IP di destinazione non sta nella stessa sottorete del mittente). Per un gateway che connette due o più sottoreti le regole di instradamento sono altrettanto immediate. 136

B3

Indirizzamento IP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

ESEMPIO

Instradamento con subnetting Si deve organizzare un piano degli indirizzi in un’organizzazione che prevede tre gruppi di macchine operanti su settori differenziati, l’uno da 50 host, il secondo da 30, il terzo da 20. Indicare le tabelle di instradamento delle macchine significative. Il piano degli indirizzi per la rete proposta potrebbe di nuovo essere quello indicato nell’Esempio precedente. Ora però vengono indicati i nomi delle subnet. subnetting subnet mask 255.255.255.192 subnet B 192.168.0.64 subnet A 192.168.0.0 192.168.0.62

R

subnet C 192.168.0.128 192.168.0.190

192.168.0.126 C1 C2 192.168.0.129 A1 192.168.0.1

B1 A50 192.168.0.65

A2 192.168.0.50

C20 192.168.0.148

B30 B2

192.168.0.94

Le tre subnet avranno i seguenti valori caratteristici: subnet mask: nome: broadcast: indirizzi disponibili:

subnet A 255.255.255.192 192.168.0.0 192.168.0.63 192.168.0.1 ÷ 192.168.0.64

subnet mask: nome: broadcast: indirizzi disponibili:

subnet B 255.255.255.192 192.168.0.64 192.168.0.127 192.168.0.65 ÷ 192.168.0.126

subnet mask: nome: broadcast: indirizzi disponibili:

subnet C 255.255.255.192 192.168.0.128 192.168.0.191 192.168.0.129 ÷ 192.168.0.190

Le macchine significative per quanto riguarda l’instradamento sono, per esempio, un host di una subnet (per esempio A1) e, naturalmente, il router R. Per quanto riguarda la TdI dell’host A1 (192.168.0.1) sulla prima subnet: ,QGLUL]]R

0DVN

*DWHZD\

,QWHUIDFFLD

      

      

      

      

4

0HWULFD       

Instradamento con subnetting

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

(pacchetti stranieri) (loopback) (sulla rete di provenienza) (host) (broadcast sulla rete di provenienza)



(broadcast limitato)

137



ESEMPIO

Per quanto riguarda la TdI del router R (192.168.0.62, 192.168.0.126, 192.168.0.190): ,QGLUL]]R

0DVN

*DWHZD\

,QWHUIDFFLD

0HWULFD

               

               

QXOOD               

QXOOD               

(pacchetti stranieri)  (loopback)  (sulle reti di provenienza)    (host)    (broadcast sulle reti di provenienza)       (broadcast limitato) 











Le TdI riportate sono state ottenute da un sistema operativo di tipo Windows, tramite il comando route digitato da una shell di MSDOS (route print) e redirezionate su file (per esempio route print > tdiA1.txt e route print > tdiR.txt). Per il sistema operativo Linux le stesse tabelle sono riportate con un formato leggermente diverso e in modo più compatto (non sono indicate le regole standard per i broadcast e l’host). Per esempio, la TdI del router R sotto Linux viene riportata nel seguente modo: 'HVWLQDWLRQ

*HQPDVN

*DWHZD\

    

    

QXOOD    

)ODJV

8 8 8

0HWULF

  

8VH QXOOD (pacchetti stranieri) OR (loopback) HWK (sulle reti di provenienza) HWK HWK

Linux indica le interfacce di inoltro con il nome convenzionale ethx per linee LAN (o pppx per linee WAN e lo per l’interfaccia di loopback), senza indicarne l’indirizzo IP come invece prevede lo stile di Windows. Naturalmente le interfacce eth0, eth1 e eth2 possiedono i corrispondenti indirizzi IP 192.168.0.62, 192.168.0.126, 192.168.0.190.

È necessario ricordare che il processo di instradamento attuato dai nodi di una rete TCP/IP si limita ad analizzare tutte le singole righe della TdI e a verificarne la «verità» (cfr. Instradamento classful), e potrebbe succedere che alla fine del computo più di una «riga» risulti verificata. In questo caso si decide la regola di inoltro scegliendo quella che nel campo Mask/Genmask contiene più «uni» e, a parità di criterio, quella con il valore di Metrica/Metric più alto.

5

Internetwork

Un esempio significativo di subnetting avviene quando è necessario organizzare una rete con diversi router interconnessi. In questo caso l’organizzazione, quantunque utilizzi indirizzi IP privati, diventa un ottimo caso di topologia di internetwork generale. 138

B3

Indirizzamento IP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

Per esempio, si debba configurare una rete descritta dal seguente schema: internetworking R1

R2

R3

R4

R5

A1 B1 A2

A50

B30 B2

D30

D1 C1 D2

C2 C20

Si nota che le LAN da organizzare sono 4 (LANA, LANB, LANC, LAND), e la più numerosa contiene 50 host. Bisogna però considerare che le connessioni punto-punto tra i router (link), spesso realizzata con linee Ethernet veloci, rappresentano anch’esse altrettante LAN, seppur composte, ognuna, da soli due host. Ciò si rende necessario dato che ogni interfaccia deve disporre di un indirizzo IP, come prescrive il protocollo IP. Naturalmente gli indirizzi IP sulle interfacce dei link non devono appartenere ai gruppi di indirizzi destinati alle 4 LAN della rete; nello stesso tempo gli indirizzi IP sullo stesso link devono appartenere alla stessa subnet per sfruttare la consegna diretta allorquando un pacchetto deve attraversare il link. In conclusione, le subnet da organizzare sono 8: 4 LAN e 4 link (R1-R2, R2-R3, R3-R4 e R3-R5). Ora, usando i criteri noti, sono necessari 6 bit per l’hostId (26=64 > 50) e ne rimarrebbero solo 8–6=2 a disposizione per la subnetId, utilizzando il gruppo 192.168.0.0 con 24 bit di subnetmask. Con 2 bit per la subnetId rimangono a disposizione solo 4 subnet (22=4). Ciò è insufficiente, per le 8 subnet richieste. Le scelte ora possono essere almeno due: o usare la classe di indirizzi privati 192.168.0.0 con 16 bit di subnetmask oppure la classe 172.16.0.0 con 24 bit di subnetmask. Si opta per quest’ultima. Ora si hanno 16 bit a disposizione per subnetId e hostId, pertanto si decide una subnetId lunga 4 bit (24=16 subnet) per evitare una scelta troppo stringente. Si useranno le prime quattro subnet per le LAN e le ultime 4 subnet per i link. La rete ha quindi nome 172.16.0.0 (subnetmask 255.255.240.0), con subnetId = 4 (bit) e hostId = 32–20 = 12 (bit). Le quattro subnet per le LAN: subnet LANA subnetId =  da:   a:  

subnet LANB subnetId =  da:   a:  

subnet LANC subnetId =  da:   a:  

subnet LAND subnetId =  da:   a:  

5

Internetwork

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

139

Le quattro subnet per i link: subnet R1-R2

subnet R2-R3

subnetId =  da:   a:  

subnetId =  da:   a:  

subnet R3-R4

subnet R3-R5

subnetId =  da:   a:  

subnetId =  da:   a:  

Si nota che gli estremi di assegnazione delle subnet specificano il nome della subnet e l’indirizzo di broadcast della subnet. Rimangono pertanto 212 – 2 = 4096 – 2 = 4094 indirizzi disponibili per ogni subnet. Ora la rete può essere rappresentata: internetworking R1

172.16.192.2

172.16.192.1 172.16.0.1

R2

172.16.208.2 172.16.208.1

R3

172.16.224.2

R4

172.16.224.1

eth0

172.16.16.1

eth2

172.16.48.1

eth1 172.16.240.1 172.16.240.2 172.16.32.1

172.16.0.2

172.16.16.2

R5

172.16.32.2 172.16.48.2

VLSM In origine, e prima dell’avvento di CIDR, il subnetting prevedeva tassativamente che in una rete «subnettata» potesse definirsi una sola subnet mask, comune a tutte le sottoreti. Con VLSM (Variable Length Subnet Masks, RFC 1009) tale limitazione è stata abolita. Un esempio di rete a cui viene applicato VLSM è riportato in Appendice. VLSM consente una distribuzione più razionale degli indirizzi IP, evitando sprechi e ottimizzando il blocco degli indirizzi a disposizione (vedi Esercizio 25).

140

Si può riportare la TdI di un router, per esempio il router R3. Bisogna scrivere una regola per ogni subnet, magari tralasciando le regole di loopback e di broadcast e trascurando la colonna della metrica per semplicità. Per quanto riguarda la TdI del router R3 (con interfacce 172.16.208.2, 172.16.240.1, 172.16.224.1): ,QGLUL]]R 0DVN *DWHZD\ ,QWHUIDFFLD                       ±    ±    ±  Nella colonna Indirizzo si riportano i nomi di tutte le subnet (8 subnet). Nella colonna Mask la netmask relativa alle subnet (stessa per tutta la rete). Le prime quattro regole riguardano le 4 LAN, le successive 4 i link. Si nota che le ultime tre subnet (i link R2-R3, R3-R4 e R3-R5) sono direttamente connesse con R3, e infatti la consegna è diretta.

B3

Indirizzamento IP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

La stessa TdI del router R3 può essere scritta in maniera più compatta: 5HWH 1H[WKRS ,QWHUIDFFLD   HWK   HWK   HWK   HWK   HWK   HWK   HWK   HWK dove:

HWK  HWK  HWK 

Ora si può indicare la configurazione di un host della sottorete LANA, per esempio quello con indirizzo IP 172.16.0.2, subnet mask 255.255.240.0 e gateway di default 172.16.0.1. Analogamente per un host della sottorete LAND, per esempio quello con indirizzo IP 172.16.48.2, subnet mask 255.255.240.0 e gateway di default 172.16.48.1.

6

Il programma route

Sia Windows che Linux mettono a disposizione un programma denominato route che consente di gestire la TdI del nodo su cui viene eseguito. L’uso più proficuo è quello che consente di visualizzare la TdI: &?:LQGRZV!URXWH SULQW (OHQFR LQWHUIDFFH F FE  D IG D %OXHWRRWK 'HYLFH 3HUVRQDO $UHD 1HWZRUN  D F  G DF ': :LUHOHVV1 :/$1 +DOI0LQL &DUG F  D  EH  ,QWHO 5 /0 *LJDELW 1HWZRUN 6RIWZDUH /RRSEDFN ,QWHUIDFH  ,3Y 7DEHOOD URXWH 5RXWH DWWLYH ,QGLUL]]R UHWH 0DVN                       5RXWH SHUPDQHQWL ,QGLUL]]R UHWH 

0DVN 

*DWHZD\  2QOLQN 2QOLQN 2QOLQN 2QOLQN 2QOLQN 2QOLQN 2QOLQN 2QOLQN 2QOLQN 2QOLQN

,QWHUIDFFLD           

0HWULFD           

,QGLU JDWHZD\ 0HWULFD  

&?:LQGRZV!

6

Il programma route

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

141

Il comando route print è molto efficace se associato alla redirezione su file, in modo tale da conservare e analizzare la TdI (route print > tdi.txt). OLQX[a URXWH Q .HUQHO ,3 URXWLQJ WDEOH 'HVWLQDWLRQ *DWHZD\     OLQX[a

*HQPDVN  

)ODJV 0HWULF 5HI 8   8*  

8VH ,IDFH  HWK  HWK

Con route si possono anche aggiungere ed eliminare regole (route statiche): &?:LQGRZV!URXWH DGG  PDVN   2. &?:LQGRZV! OLQX[a URXWH DGG QHW  QHWPDVN  JZ  OLQX[a

Si nota che l’ultimo parametro è il gateway. In questo caso la regola viene persa al riavvio del sistema (per rendere persistente una regola si usa il parametro –p). Per eliminare regole, invece: &?:LQGRZV!URXWH GHOHWH  2. &?:LQGRZV! OLQX[a URXWH GHO QHW  QHWPDVN  JZ  OLQX[a

7 Calcolatrici IP Decidere il piano di indirizzamento di una rete IP dipende da vari criteri (esempio, il numero di subnet necessarie e il numero di host da indirizzare) e comporta numerosi calcoli (esempio, per individuare il nome della subnet o il suo indirizzo di broadcast). Per facilitare questi compiti sono disponibili numerose versioni di calcolatrici IP (IP Calculator) che effettuano gran parte dei calcoli richiesti da un piano di indirizzamento, inserendo i criteri desiderati. A

142

Supernetting

Il problema dello spreco degli indirizzi IP distribuiti dagli ISP alle organizzazioni richiedenti, spreco causato dalla rigidità dimensionale delle classi definite dallo schema classful, è stato affrontato con il supernetting. Il supernetting fa parte di un insieme di disposizioni emanate nel 1993 e denominato CIDR (Classless Inter-Domain Routing, RFC 1519). Il CIDR spiega che: 1. la metà superiore della classe A (da 64 a 127) è riservata; 2. gli indirizzi di classe B sono assegnati solo se la rete ha almeno 32 sotto-

reti e oltre 4096 host complessivi; 3. gli indirizzi della metà inferiore della classe C sono assegnati a blocchi contigui in base alla localizzazione geografica; 4. gli indirizzi della metà superiore della classe C (da 208.0.0 a 223.255.255) non sono assegnati. Come conseguenza del punto 3, il supernetting riesce ad aggregare più reti di classe C in una stessa rete fisica, superando il limite imposto dallo sche-

B3

Indirizzamento IP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 2 © Zanichelli 2013 per Informatica

ESEMPIO

ma classful. In questo modo un ISP, invece di vendere un blocco di indirizzi di classe B a un’organizzazione richiedente che necessita di poche migliaia di indirizzi (sprecando altrettante migliaia di indirizzi), può aggregare un numero idoneo di reti di classe C e cederle come se fossero un unico blocco compatto rappresentante un’unica rete fisica. Per ottenere ciò si usa una sequenza di 32 bit con la quale si ridefinisce la parte netId dell’indirizzo IP (con la solita operazione di AND), consentendo di nuovo la regola di routing implicito su una stessa rete fisica, questa volta aggregata. Questa sequenza, detta anche maschera di supernetting, deve sempre essere specificata per le reti che adottano CIDR. CIDR introduce anche la notazione per la maschera di supernetting attraverso il carattere “/” (slash), indicata in gergo CIDR con a.b.c.d/n. Per esempio, la notazione 192.192.0.0/22 significa che i primi 22 bit degli indirizzi devono essere mascherati in AND con altrettanti «uni» per ottenere il netId, ovvero per aggregare 4 reti di classe C (la cui netmask classful vale 24 bit). Infatti 24–22=2, e questi 2 bit consentono di numerare 22=4 reti: 192.192.0.x, 192.192.1.x, 192.192.2.x, 192.192.3.x.

A Ottime versioni di calcolatrici IP sono disponibili sul Web, come per esempio: http://www.subnet-calculator.com

In questo sito è disponibile anche il calcolo con notazione CIDR.

Supernetting Un Service Provider che ha ottenuto da un LIR un blocco di indirizzi IP descritto da 210.1.8.0/21 riceve la domanda di indirizzi da 4 aziende: A deve indirizzare 1000 indirizzi macchine, B 500, C 200 e D 100. Mostrare le maschere di supernetting utilizzate dai router dell’ISP. Per prima cosa si analizza la notazione 210.1.8.0/21. Si nota che si tratta di un gruppo di indirizzi di classe C, come si desume dal primo byte (191