Lezione 4: Protocolli di accesso casuale, Ethernet, commutazione

CAPITOLO 6. PROTOCOLLI DI ACCESSO
43
A
token
B
C
Figura 6.2: Rete token.
Ció é quella che viene chiamata collisione. I vari protocolli di accesso casuale
si distinguono per il modo in cui cercano di evitare le collisioni. Nel seguito
discuteremo brevemente le caratteristiche dei principali protocolli di tale tipo.
6.2.1
Aloha
L’Aloha é storicamente il primo protocollo ad accesso casuale (1970), nato appositamente per comunicazioni tra terminali e/o calcolatori. É stato
progettato per evitare le caratteristiche che rendono il TDMA costoso da
implementare, ovvero
• la necessitá di sincronismo (che richiede anche la trasmissione di sequenze di bit non di informazione),
• l’occupazione del canale anche nei periodi in cui gli host non hanno
niente da trasmettere.
Soprattutto il fatto di evitare il sincronismo porta ad un hardware semplice
ed economico.
Quando devono essere trasmessi dei dati, l’host forma una serie di pacchetti. Questi pacchetti contengono una parte dei dati che devono essere
trasmessi, un preambolo contenente un qualcosa che identifichi i terminali
sorgente e destinazione (ossia il loro indirizzo) e dei bit di paritá, utilizzati
CAPITOLO 6. PROTOCOLLI DI ACCESSO
preambolo
dati
44
bit di parità
Figura 6.3: Contenuto di un pacchetto del protocollo aloha.
tempo di andata e ritorno
(attesa dell’ACK)
D
T
host A
tempo
pacchetto ritrasmesso
host B
parte
distrutta
tempo
Figura 6.4: Collisione e ritrasmissione di pacchetti secondo il protocollo
aloha.
per rilevare errori di trasmissione (codifica di canale) (Fig. 6.3). I singoli
pacchetti sono trasmessi appena generati, senza controllare se altri treminali
stanno trasmettendo (occupando il canale). Se il canale non é utilizzato in
quel momento da altri host, il pacchetto arriva a destinazione senza errori. In
tal caso l’host di destinazione invia all’host sorgente un ACK (acknowledgement), ossia una sequenza di bit utilizzata per notificare la corretta ricezione
e il terminale sorgente puó inviare un altro pacchetto.
Se peró ci sono piú host che trasmettono contemporaneamente, il segnale
relativo a parte dei pacchetti viene alterata (Fig. 6.4). Gli host di destinazione rivelano l’errore o non ricevono il pacchetto, e non trasmettono quindi
l’ACK. Non ricevendo l’ACK entro un tempo di time–out, gli host sorgenti ritrasmettono i pacchetti. Provvedono peró a generare a caso l’istante
di ritrasmissione per evitare un’ulteriore collisione. Come evidenziato dalla
Fig. 6.4, l’istante di ritrasmissione viene generato casualmente nell’intervallo
[0, T ], dove T sará scelto per mantenere bassa la probabilitá di collisione e
non rendere eccessivamente alto il ritardo di ritrasmissione.
Il tutto funziona nel caso di traffico altamente impulsivo. É comunque
un sistema instabile, in quanto all’aumentare del traffico le collisioni possono
divenire cosı́ frequenti da congestionare il canale.
Per ridurre la probabilitá di collisione é stato ideato l’Aloha slotted. Secondo tale protocollo la trasmissione dei pacchetti puó avvenire solo all’istante inziale di un certo intervallo temporale (slot) (Fig. 6.5). Viene cosı́
inserita una minima sincronizzazione, ma che puó essere non molto precisa.
CAPITOLO 6. PROTOCOLLI DI ACCESSO
45
host A
pacchetto
generato
pacchetto
trasmesso
tempo
host B
pacchetto
generato
pacchetto
trasmesso
tempo
Figura 6.5: Trasmissione di pacchetti secondo il protocollo aloha slotted.
6.2.2
CSMA
La tecnica CSMA (Carrier Sense Multiple Access) é utilizzabile solo nelle
LAN, dove i ritardi di propagazione del segnale tra i vari host che la compongono sono molto piccoli. Secondo tale tecnica un host controlla il canale
prima di trasmettere, verificando che non ci sia nessun altro che sta trasmettendo (ad esempio tramite la rilevazione di un segnale portante). Se il canale
é in uso attende, altrimenti trasmette il pacchetto.
Una collisione avviene se due host vogliono trasmettere in istanti distanti
meno del tempo di propagazione del segnale. Dopo la trasmissione, gli host
rimangono in attesa di un segnale di ACK da parte degli host di destinazione. Se tale ACK non giunge dopo un tempo di time–out, gli host devono
ritrasmettere i pacchetti.
Dopo una collisione il canale é inutilizzabile per il tempo di trsmissione dei
pacchetti. Tale ritardo puó essere ridotto nel caso della tecnica CSMA–CD
che vedremo nel prossimo paragrafo.
6.2.3
CSMA–CD
Secondo la tecnica CSMA–CD (Carrier Sense Multiple Access–Collision Detection), gli host sorgenti controllano il canale anche dopo aver iniziato la
trasmissione del pacchetto, per verificare se ci sono collisioni. Quindi, quando un host deve trasmettere un pacchetto controlla il canale e, se lo trova
libero, trasmette il pacchetto continuando a controllare il canale.
Se viene rilevata una collisione durante la trasmissione (ad esempio tramite oscillazioni dell’ampiezza del segnale, oscillazioni causate dalla sovrapposizione di un secondo segnale), il terminale trasmette un breve segnale di
disturbo (jamming) per assicurarsi che tutti gli host rilevino la collisione ed
CAPITOLO 6. PROTOCOLLI DI ACCESSO
46
interrompano la trasmissione. L’host sorgente aspetta quindi un tempo casuale, verifica che il canale sia libero e, in tal caso, ritrasmette il pacchetto.
Il tempo di inutilizzazione del canale nel caso di una collisione é limitato alla
durata del pacchetto.
Il tempo di ritardo di ritrasmissione viene generato casualmente in [0, T ],
dove T viene via via aumentato se continuano a verificarsi collisioni, fino a
notifiare un errore di trasmissione e rinunciare alla trasmissione del pacchetto,
per evitare l’instabilitá dovuta alla congestione della rete.
6.2.4
Ethernet
Sul CSMA–CD é basata la tecnologia Ethernet per l’accesso di computer
a LAN. In alcuni tipi di sistemi possono essere diffuse reti basate su altri
protocolli, ad esempio in ambito IBM possiamo trovare delle reti di tipo
Token Ring. Comunque, Ethernet é il tipo di rete piú diffusa, soprattutto
per quanto riguarda il mondo dei Personal Computer.
I computer portatili, nella maggior parte dei casi, oltre ad avere a bordo
un modem con cui un utente puó collegarsi ad Internet attraverso la rete
telefonica ed un provider, hanno a bordo una scheda Ethernet o Fast Ethernet, ossia una scheda (o adattatore) di rete per interfacciarsi ad ad una rete
Ethernet.
Ethernet nasce alla fine degli anni settanta, da un consorzio (DIX consortium) formato da Digital Equipment, Intel e Xerox. Partita con l’utilizzo
del cavo coassiale, é stato previsto l’utilizzo di doppini, sia schermati (STP:
Shielded Twisted Pair) che non schermati (UTP: Unshielded Twisted Pair),
fino alla fibra ottica. I cavi sono intrecciati (twisted) per diminuire la sensibilitá alle interferenze. Allo stato attuale vengono comunemente utilizzate
schede a 100 Mbit/sec, ed il costo delle schede Gigabit Ethernet (1 Gbit/sec)
comincia a diminuire.
Nella sua evoluzione é stata posta particolare attenzione alla standardizzazione, (comitato IEEE 802.3) in modo da garantire l’interoperabilitá tra
prodotti di case diverse. Il comitato di standardizzazione ha dettato varie
implementazioni. Le principali caratteristiche di alcune di esse sono riassunte
di seguito.
10BASE5
10BASET
100BASETX
(Ethernet)
(Ethernet) (Fast Ethernet)
Velocitá
10 Mbit/s
10 Mbit/s
100 Mbit/s
Mezzo
cavo coassiale UTP
2 coppie UTP o STP (cat. 5)
Trasmissione
Manchester
Manchester MLT–3
Topologia
Bus
Stella
Stella
Lunghezza max. 500 m
100 m
100 m
CAPITOLO 6. PROTOCOLLI DI ACCESSO
bit: 0
47
bit: 1
Figura 6.6: Modulazione manchester.
La lunghezza massima é detrminata sia da considerazioni di attenuazione
del segnale che di ritardi di propagazione (per assicurare una corretta rilevazione delle collisioni). La modulazione di tipo Manchester é rappresentata
in Fig. 6.6, mentre la modulazione MLT–3 é appositamente progettata per
concentrare la banda del segnale entro i 30 MHz, evitando potenziali problemi di emissione elettromagnetica da parte della linea utilizzata come mezzo
di trasmissione.
Capitolo 7
Tecniche di commutazione
Consideriamo due utenti (A e B) collegati a due diverse LAN e che vogliono
comunicare (Fig. 7.1). I collegamenti tra le due LAN sono generalmente
ridondanti, ossia esistono piú percorsi che le collegano. I nodi C indicano
dei nodi di commutazione, ossia che sono in grado di indirizzare il traffico
a seconda della destinazione. Abbiamo visto come é possibile trasmettere
informazione tra due nodi, ed una particolare tecnologia, la Ethernet. In
questo caso i due utenti appartengono a LAN diverse, ed il traffico deve
essere indirizzato attraverso una serie di nodi di commutazione. Il modo
in cui viene stabilito il collegamento e viene trasferita l’informazione tra
gli utenti é definito dalla particolare tecnica di commutazione. Ne esistono
essenzialmente tre tipi:
• Commutazione di circuito (c.c.);
• Commutazione di messaggio (c.m.);
• Commutazione di pacchetto (c.p.).
La prima (c.c.) é piú adatta al traffico di tipo telefonico. L’ultima (c.p.) é
piú adatta ad un traffico di tipo impulsivo come quello fra calcolatori.
7.1
Commutazione di circuito
In questo caso viene stabilito un collegamento ininterrotto tra A e B e completamente dedicato ad essi per tutta la durata della comunicazione (anche
nei periodi di assenza di traffico). La comunicazione secondo tale tecnica
avviene in tre fasi.
1. Instaurazione del circuito.
Viene stabilito il circuito tra A e B. Per far ció A invia una richiesta
48
CAPITOLO 7. TECNICHE DI COMMUTAZIONE
49
LAN 1
LAN 2
C3
A
C1
C2
C5
C7
B
C6
C4
Figura 7.1: Utenti collegati a diverse LAN connesse tra loro. I nodi C hanno
capacitá di commutazione (indirizzamento del traffico).
LAN 1
LAN 2
C3
A
C1
C2
C5
C7
B
C4
C6
Figura 7.2: Commutazione di circuito: Trasmissione sul circuito.
di connessione (call request) con B a C1. C1 invia la richiesta di connessione ad un nodo successivo, scelto in base alla destinazione (B) e,
eventualmente, alla situazione attuale di traffico. Ad esempio la invia
a C2.
Il processo continua finché la richiesta di connessione non giunge a B.
L’informazione di B pronto ad accettare o meno il collegamento fa il
percorso inverso e, nel caso di B pronto, si passa al trasferimento dati.
2. Trasferimento dati.
L’informazione viene trasferita sul percorso (circuito) assegnato (Fig. 7.2).
Il percorso rimane assegnato alla comunicazione tra A e B per tutto
il tempo richiesto, anche nei periodi in cui gli host non hanno niente
da trasmettere. É da sottolineare che nei tratti in comune con altri
percorsi, possono transitare altre informazioni seguendo una tecnica di
multiplexing o di accesso. La particolare linea é comunque comple-
CAPITOLO 7. TECNICHE DI COMMUTAZIONE
50
tamente dedicata alla comunicazione tra A e B, anche nei periodi di
silenzio.
3. Sconnessione del circuito.
Alla fine della comunicazione, uno dei due host (A o B) chiude la comunicazione, inviando segnali di rilascio della connessione assegnata ai
vari nodi coinvolti.
La commutazione di circuito é scarsamente efficiente nel caso di traffico dati.
Infatti, si ha un ritardo iniziale nella comunicazione, necessario all’instaurazione del circuito, e la mancata utilizzazione delle risorse di rete nei periodi
di silenzio.
7.2
Commutazione di messaggio
La tecnica di commutazione di messaggio (c.m.) é una tecnica di tipo store
and forward (memorizzazione ed inoltro). In tal caso, il messaggio (ossia
l’intero blocco dati che costituisce la totalitá dell’informazione che A vuole
trasferire a B) viene inviato successivamente ai vari nodi che si incontrano
nel percorso per giungere all’host di destinazione. Nei nodi intermedi, il
messaggio viene memorizzato in una coda (area di memoria in cui si trovano
i messaggi che devono essere inviati su una determinata linea connessa al
nodo intermedio) in attesa di essere inviato.
Nel nostro esempio, A, visto che B non gli é direttamente connesso, determina C1 come prima destinazione intermedia. A invia quindi una richiesta
a C1 per trasferire il messaggio. Quando C1 é pronto, lo notifica ad A che
trasferisce l’intero messaggio. C1, verificato che il destinatario é B (informazione che andrá scritta in un’opportuna intestazione, o header, del messaggio
stesso), sulla base della conoscenza dello stato dei nodi a lui vicini e sulla
base della destinazione (B), chiede di inviare il messaaggio alla successiva destinazione intermedia (C2). Il processo si ripete verso i nodi incontrati lungo
un percorso che giunge a B, finché il messaggio non giunge a destinazione.
I nodi devono quindi avere una capacitá di memorizzazione. In particolare, saranno presenti delle code (una per ogni linea connessa al nodo) in
cui memorizzare i vari messaggi da inviare. La presenza di piú messaggi
nella coda causerá un ritardo nella trasmissione del messaggio rispetto al
solo tempo di propagazione tra A e B. I nodi devono poi saper determinare
verso quale nodo successivo instradare il messaggio in base alla destinazione
dello stesso. Ai dati informativi veri e propri del messaggio devono essere
aggiunte una serie di informazioni di servizio (ad esempio, l’identificazione
dell’host sorgente e destinazione), che non costituiscono informazioni utili al
CAPITOLO 7. TECNICHE DI COMMUTAZIONE
51
destinatario. Aumenta peró l’utilizzazione della rete, in quanto i singoli rami
interessati al collegamento tra A e B possono essere utilizzati da altri utenti
nei periodi di silenzio.
7.3
Commutazione di pacchetto
La commutazione di messaggio non ha peró grande applicazione (ad esempio
le reti telegrafiche). Nel caso della trasmissione dati tra calcolatori, é invece
utilizzata la tecnica di commutazione di pacchetto (c.p.).
É anch’essa una tecnica di tipo store and forward ma, a differenza della
c.m., i dati da trasmettere vengono divisi in piccoli blocchi (i pacchetti)
contenenti sia informazioni di controllo che una parte dei dati che devono
essere trasferiti. É da sottolineare che il trasferimento di blocchi di dati di
lunghezza fissata é infatti piú vantaggioso del trasferimento di singoli blocchi
di lunghezza variabile, come é stato dimostrato, anche teoricamente.
Se A deve trasmettere una certa quantitá di dati a B, li frammenta in
un certo numero di pacchetti, ai quali aggiunge una serie di informazioni
di controllo (header) necessarie al trasferimento. Si hanno cosı́ una serie di
pacchetti che devono essere trasferiti da A a B. Come vedremo, il modo di
trasferire tali pacchetti dipende dalla particolare tecnica di commutazione di
pacchetto. In ogni caso, possiamo affermare che una rete a c.p. é costituita
da un insieme di nodi a c.p.. Tali nodi, per poter operare l’instradamento
dei pacchetti, devono essere in grado di determinare se l’host di destinazione é direttamente connesso a loro, o la successiva destinazione intermedia
a seconda del destinatario del pacchetto. Inoltre, per un migliore instradamento, i nodi dovrebbero conoscere lo stato della rete (ad esempio situazioni
di congestione, ecc.). A tale proposito, si deve notare che la trasmissione di
informazioni tra i nodi riguardanti il loro stato impiega risorse. Cosı́ i nodi
non potranno avere istante per istante lo stato dell’intera rete, ma baseranno
il loro funzionamento su un ridotto numero di informazioni.
Una linea tra due nodi puó essere condivisa da diversi collegamenti, e ció
risulta in un aumento dell’utilizzo della rete. Inoltre la tecnica c.p. puó operare automaticamente una conversione di velocitá di trasmissione, in quanto
su ogni tratto i nodi scambieranno pacchetti alla propria velocitá di trasmissione. Infine, all’aumentare del traffico di rete, aumenta il ritardo di
trasmissione, ma i pacchetti vengono comunque inviati.
Per l’instradamento delle serie di pacchetti si hanno due approcci:
CAPITOLO 7. TECNICHE DI COMMUTAZIONE
7.3.1
52
Datagramma
Nell’instradamento a datagramma ogni pacchetto é trattato individualmente,
senza tenere conto di quelli inviati in precedenza. L’instradamento viene
cosı́ deciso pacchetto per pacchetto, e pacchetti con la stessa origine e la
stessa destinazione possono seguire strade diverse e possono quindi arrivare
a destinazione con un ordine diverso da quello di trasmissione.
Ad esempio, riferendoci alla Fig. 7.1, supponiamo che A debba inviare
a B tre pacchetti. A inizia a trasmettere i pacchetti al nodo C1, che li
trasmetterá a sua volta a C2. Per il primo pacchetto, C2 puó decidere di
instradarlo verso C4 osservando, per esempio, che in quell’istante la propria
coda dei pacchetti che devono essere inviati a C4 é la piú breve tra le code
relative alle possibili destinazioni successive per B. Lo stesso puó accadere
per il secondo pacchetto, mentre il terzo puó essere instradato verso C5, se
la coda dei pacchetti che devono essere inviati a tale nodo é, nel frattempo,
divenuta la piú corta.
Nel singolo pacchetto dovranno essere inserite, in un apposito header, le
informazioni di indirizzo sorgente e destinazione, nonché un’indicazione sul
numero d’ordine del pacchetto, per consentire il loro corretto riordinamento
da parte di B. É compito del destinatario riordinare i pacchetti nel caso
arrivino in un ordine diverso da quello di trasmissione, e richiedere l’eventuale
ritrasmissione dei pacchetti deteriorati o andati perduti.
7.3.2
Circuito virtuale
Nell’instradamento a circuito virtuale viene pianificato un percorso prima
dell’invio dei pacchetti, percorso che sará seguito da tutti i pacchetti.
Nel nostro esempio, A invierá un pacchetto di controllo (Call request,
richiesta di connessione) a C1 chiedendo una connessione con B. C1 invierá
tale richiesta a C2. C2, verificando, ad esempio, lo stato delle proprie code,
invierá tale pacchetto di richiesta a C4, e cosı́ via finché il Call request non
giunge a B. Se B é pronto ad accettare la connessione, invia un pacchetto
di accettazione (Call accept), che giunge ad A tramite il percorso inverso.
I pacchetti vengono quindi inviati da A, e giungono a B tramite il percorso
concordato, lo stesso per tutti i pacchetti.
Anziché l’indirizzo (ossia l’identificativo) della destinazione, l’header dei
pacchetti contiene un identificatore del particolare circuito virtuale. Ogni
nodo indirizzerá i pacchetti secondo tale indicatore, senza operare scelte di
instradamento, ma mantenendo quella fatta all’apertura del collegamento.
Come conseguenza, i pacchetti giungono a destinazione nello stesso ordine con
CAPITOLO 7. TECNICHE DI COMMUTAZIONE
A
sorgente
C1
C2
53
B
destinazione
Figura 7.3: Utenti collegati tramite due nodi di commtazione.
cui sono stati trasmessi. Alla fine, una delle due stazioni decide di chiudere
la connessione inviando un pacchetto di Clear request (richiesta di chiusura).
Si deve notare che l’instradamento a circuito virtuale non implica l’assegnazione esclusiva di un percorso (e delle relative risorse di rete) per il dato
collegamento, come invece avviene nella commutazione di circuito. Altri
circuiti virtuali possono condividere i collegamenti.
Il circuito virtuale ha il vantaggio che i pacchetti giungono nell’ordine di
trasmissione. Inoltre i nodi intermedi possono effettuare un controllo e richiedere la trasmissione al nodo precedente in caso di errore. Infine i pacchetti
dovrebbero transitare dai nodi piú rapidamente, poiché non é richiesta una
decisione sul loro instradamento.
Per contro l’instradamento a datagramma evita la fase di apertura della connessione, risultando generalmente in un sistema piú veloce nel caso
della trasmissione di pochi pacchetti. Il datagramma si adatta inoltre alle
situazioni di congestione della rete, indirizzando il traffico verso i nodi meno
utilizzati.
Molte delle reti utilizzano, per il traffico interno, i circuiti virtuali. Nell’interconnessione di reti (internetworking) é invece comune operare tramite
datagramma.
Per chiarire al meglio le operazioni nelle diverse tecniche di commutazione, confrontiamo la trasmissione di una certa quantitá di dati considerando
il transito attraverso due nodi di commutazione (Fig. 7.3). Disegnando il
diagramma degli eventi temporali per le varie tecniche di commutazione,
otteniamo quanto riportato nelle Figg. 7.4, 7.5, 7.6, 7.7.
Infine, per chiarire come la divisione dei dati da trasmettere in pacchetti
puó risultare vantaggiosa, consideriamo il caso schematizzato in Fig. 7.8, in
cui si considera la trasmissione dell’intero blocco dati e la divisione dello stesso in due pacchetti. Fare pacchetti troppo piccoli diventa peró sconveniente,
poiché la presenza degli header del pacchetto implica la trasmissione di un
gran numero di bit non informativi.
CAPITOLO 7. TECNICHE DI COMMUTAZIONE
A
call
request
C1
C2
54
B
propagazione
ritardo di elaborazione
call
accept
non c’è ritardo di elaborazione
(il collegamento è già stabilito)
Dati
clear request
tempo
Figura 7.4: Trasferimento dati tramite commutazione di circuito.
CAPITOLO 7. TECNICHE DI COMMUTAZIONE
A
call
request
C1
C2
55
B
call
accept
Header
Dati
ritardo di elaborazione
(si cerca il nodo successivo migliore)
tempo
Figura 7.5: Trasferimento dati tramite commutazione di messaggio.
CAPITOLO 7. TECNICHE DI COMMUTAZIONE
A
C2
C1
56
B
pkt1
pkt1
pkt2
ritardo per la coda di C2
pkt2
pkt1
pkt3
pkt3
Header
pkt2
Dati
pkt3
tempo
Figura 7.6: Trasferimento dati tramite commutazione di pacchetto a
datagramma.
CAPITOLO 7. TECNICHE DI COMMUTAZIONE
A
call
request
C2
C1
57
B
call
accept
ritardo per la coda di C2
pkt1
pkt1
pkt2
Header
pkt2
pkt1
Dati
pkt3
pkt3
pkt2
pkt3
clear request
tempo
Figura 7.7: Trasferimento dati tramite commutazione di pacchetto a circuito
virtuale.
CAPITOLO 7. TECNICHE DI COMMUTAZIONE
58
C2
B
Header
pkt1
Dati
pkt2
pkt1
pkt2
pkt1
pkt2
tempo
tempo
Figura 7.8: Divisione in pacchetti dei dati da trasmettere.