4) Il sottolivello MAC (Medium Access Control) |
Come già chiarito, le reti sono divise
in due categorie: punto a punto
e broadcast.
Nelle reti broadcast il problema principale è decidere
quale elaboratore (detto anche stazione)
ha diritto di usare il mezzo trasmissivo quando c'è competizione
(qui non si può alzare la mano per chiedere la parola!).
Si deve evitare che molte stazioni trasmettano contemporaneamente,
perché i relativi segnali si disturberebbero a vicenda.
I protocolli per decidere chi è il prossimo a trasmettere
su un canale broadcast (detto anche multiaccess
channel o random access
channel) appartengono ad un sottolivello del livello
data link, detto sottolivello MAC.
Essi sono usati sopratutto nelle LAN, ma anche nelle parti di
WAN basate su satelliti.
Il problema principale è come allocare il canale ai vari utenti in competizione. Ci sono due meccanismi fondamentali:
L'allocazione statica prevede la suddivisione del canale fra gli N utenti, ciascuno dei quali riceve di conseguenza una frazione della banda totale. Si può fare, ad esempio, con tecniche quali FDM, allocando a ciascun utente una banda di frequenze distinta da quella degli altri utenti. Ciò va bene se il numero di utenti non varia rapidamente e se tutti trasmettono con un data rate più o meno costante, però in genere comporta vari problemi:
Viceversa, l'allocazione dinamica cerca di adeguarsi alle esigenze trasmissive, in modo da soddisfarle al meglio. Ci sono alcune assunzioni da fare:
4.1) Protocollo ALOHA |
Nacque negli anni '70 per collegare tra loro,
tramite radio al suolo, gli elaboratori sparsi nelle isole Hawaii.
Esistono due versioni, Pure Aloha
e Slotted Aloha.
Nel Pure Aloha le stazioni
trasmettono quando vogliono, però durante la trasmissione
ascoltano il canale e confrontano ciò che ricevono con
ciò che hanno spedito.
Dunque, se si verifica una collisione se ne accorgono, e in tal
caso, dopo aver lasciato passare una quantità di tempo
casuale, ritrasmettono il frame. La scelta di attendere per una
quantità di tempo casuale discende dal fatto che altrimenti
una collisione ne ricrea infinite altre.
Qual'è l'efficenza dello schema Aloha puro, in queste circostanze
caotiche?
Definiamo come frame time
il tempo necessario alla trasmissione di un frame, che ha lunghezza
fissa. Supponiamo che vengano complessivamente generati dei frame
con una distribuzione di Poisson avente media di S frame per frame
time.
Ovviamente, se S >= 1, ci saranno quasi sempre collisioni.
Per un throughput ragionevole ci aspettiamo 0 < S < 1. Purtroppo,
oltre ai frame nuovi, ci sono anche quelli relativi alla ritrasmissione
causata da collisioni precedenti.
Supponiamo che la distribuzione di tutti i frame (vecchi e nuovi)
sia anch'essa di Poisson, con valor medio pari a G frame per frame
time.
A basso carico ci aspettiamo poche collisioni, quindi G è
circa uguale ad S. Ad alto carico invece avremo più collisioni,
per cui G sarà maggiore di S.
In ogni caso, sotto qualunque condizione di carico il throughput
(cioé la quantità di pacchetti
che arrivano a destinazione) è uguale al
carico offerto moltiplicato per la probabilità che la trasmissione
abbia successo, ossia:
dove P(0) è la probabilità che un frame non soffra
collisioni.
Per calcolare il throughput effettivo, e quindi l'efficienza,
ottenibile col protocollo Pure Aloha, si devono fare due considerazioni.
La prima è che la probabilità di generare k frame durante un intervallo di tempo pari ad un frame time è data, per la distribuzione di Poisson sopra definita (avente, si ricordi, valor medio pari a G frame per frame time) dalla relazione:
Dunque, la probabilità che si generino zero frame in un
intervallo di tempo pari ad un frame time è pari a
La seconda considerazione è che il periodo
di vulnerabilità di un frame, cioé
l'intervallo di tempo nel quale esso è a rischio di collisioni,
è lungo 2 volte il frame time.
In tale periodo vengono generati mediamente 2G frame. Di conseguenza,
la probabilità che non si generino nuovi frame per tutto
il periodo di vulnerabilità di un frame è:
Utilizzando tale probabilità nella relazione vista sopra
per il throughput, otteniamo la stima del throughput ragggiungibile
col protocollo Pure Aloha, che è
ed ha la seguente forma:
Il massimo throughput è 0,184, cioé meno del 20%
(due frame su 10 slot) in corrispondenza di un carico G pari a
0,5 frame per frame time.
Un modo per aumentare l'efficienza di Aloha (Roberts, 1972) consiste
nel dividere il tempo in intervalli discreti, ciascuno corrispondente
ad un frame time. Ovviamente gli utenti devono essere d'accordo
nel confine fra gli intervalli, e ciò può essere
fatto facendo emettere da una attrezzatura speciale un breve segnale
all'inizio di ogni intervallo.
Le stazioni non possono iniziare a trasmettere quando vogliono,
ma solo all'inizio dell'intervallo. Questo protocollo, che prende
il nome di Slotted Aloha, dimezza il periodo di vulnerabilità
che diviene uguale ad un solo frame time.
In tale periodo vengono generati mediamente G frame, per cui la
probabilità che non si generino nuovi frame per tutto il
periodo di vulnerabilità di un frame è:
Utilizzando tale probabilità nella relazione vista precedentemente
per il throughput, otteniamo la stima del throughput ragggiungibile
col protocollo Slotted Aloha, che è:
ed ha la seguente forma:
Il massimo throughput è 0,368, in corrispondenza di un
carico G pari a 1 frame per frame time.
4.2) Protocolli CSMA (Carrier Sense Multiple Access) |
Anche Slotted Aloha ha una bassa efficienza,
il che d'altronde è comprensibile visto che le stazioni
trasmettono senza preoccuparsi se il canale è libero.
Nelle reti locali invece le stazioni possono ascoltare il canale
e regolarsi di conseguenza, ottenendo un'efficienza molto più
alta. I protocolli nei quali le stazioni ascoltano il canale prima
di iniziare a trasmettere si dicono carrier
sense.
Ci sono vari tipi di protocolli carrier sense:
4.3) Protocolli CSMA/CD (CSMA with Collision Detection) |
Un ulteriore miglioramento si ha se le stazioni
interrompono la loro trasmissione non appena rilevano una collisione,
invece di portarla a termine.
Rilevare la collisione è un processo analogico: si ascolta
il canale durante la propria trasmissione, e se la potenza del
segnale ricevuto è superiore a quella trasmessa si scopre
la collisione.
Quando si verifica una collisione, la stazione aspetta una quantità
casuale di tempo e riprova a trasmettere.
Posto uguale a T il tempo di propagazione del segnale da un capo
all'altro della rete, è necessario che trascorra un tempo
pari a 2T perché una stazione possa essere sicura di rilevare
una collisione.
Infatti, se una stazione A posta ad una estremità della
rete inizia a trasmettere al tempo t0, il suo segnale
arriva a B (posta all'altra estremità della rete) dopo
al tempo t0 + T; se un attimo prima di tale istante
anche B inizia a trasmettere, la collisione conseguente viene
rilevata da B quasi immediatamente, ma impiega una ulteriore quantità
T di tempo per giungere ad A, che la può quindi rilevare
solo un attimo prima dell'istante t0 + 2T.
Il modello concettuale che si utilizza è il seguente:
4.4) Le reti ad anello |
Una rete ad anello
consiste di una collezione di interfacce di rete, collegate a
coppie da linee punto a punto:
Le reti ad anello hanno diverse attrattive:
Ogni bit che arriva all'interfaccia è copiato in un buffer interno, poi rigenerato e ritrasmesso sul ring. Può essere modificato prima di essere ritrasmesso.
L'interfaccia di rete può operare in due diverse modalità,
listen mode e transmit
mode:
In listen mode i bit in ingresso vengono copiati nel buffer interno
(dove possono essere anche modificati) e quindi ritrasmessi con
un ritardo di un bit (1-bit delay).
In transmit mode l'anello è aperto, e i bit in arrivo vengono
rimossi; nuovi bit vengono trasmessi sull'anello.
Una speciale configurazione binaria, detta token
(gettone) circola in
continuazione se nessuno vuole trasmettere.
Quando una stazione vuole trasmettere, deve:
Poiché c'è un solo token, questo meccanismo risolve
senza conflitti il problema dell'accesso al mezzo.
Alcune considerazioni sono degne di nota:
La velocità di propagazione del segnale nel rame è
circa 200 metri per microsecondo. Con un data rate (ad esempio)
di 1 Mbps, si genera un bit al microsecondo. Dunque, un bit è
lungo in tal caso circa 200 metri, per cui per contenere 10 bit
un anello dovrebbe essere lungo almeno 2 km.
In realtà sul ring trovano posto:
In definitiva, è necessario che x + y sia maggiore del
numero di bit del token. Ciò significa che, a seconda delle
caratteristiche dimensionali della rete in questione, può
essere necessario ricavare un ritardo addizionale, sotto forma
di buffer aggiuntivi, in una stazione (che ha un ruolo particolare,
quello di monitor dell'anello).