• Non ci sono risultati.

CAPITOLO 2 MAC LAYER IN AD HOC NETWORK 25

2.2 Tecniche di accesso multiplo in reti ad hoc 28

2.2.2 Tecniche Contention-Free 36

2.2.2.2 CDMA 43

2.2.2.2.1 CDMA in ad hoc network 44

I vantaggi derivanti dall’uso del CDMA in un ad hoc network possono esser riassunti così:

Capacity improvement, in quanto si aumenta il numero di corrette ricezioni a livello datalink;

Energy saving, in quanto si riduce l’eventuale intervallo temporale che un nodo deve attendere prima di trasmettere, perché, senza CDMA, il canale deve esser sentito idle: in tal modo per un nodo si riduce la fase di idle listening (che, comunque, non può essere eliminata completamente) che, come è stato visto nel capitolo precedente, consuma energia; dall’altro lato, il consumo energetico è ridotto in quanto l’accesso scheduled consente di evitare collisioni;

Routing overhead reduction, in quanto è più semplice implementare il routing multi-path nelle CDMA ad hoc network.

Utilizzare CDMA come tecnica di accesso in una rete ad hoc è, tuttavia, un obiettivo non banale da raggiungere. Non sono, infatti, ancora risolti diversi importanti problemi, tra cui la sincronizzazione, l’implementazione di un protocollo di coding e il near-far effect, che nascono essenzialmente a causa del comportamento non coordinato dei nodi e dal fatto che manca un controllo centralizzato, presente, invece, in una rete cellulare grazie alla base station.

Sebbene meno stringenti rispetto a TDMA, in cui in teoria tutti i nodi devono essere sincronizzati, anche CDMA possiede dei requisiti di sincronismo, in particolare necessita una accurata fase di sincronizzazione tra sender e receiver. Mentre in un sistema cellulare, il problema è risolto abbastanza agevolmente mediante l’uso di canali globali di controllo usati dalla base station, in una rete ad hoc esso a prima vista sembra aver la stessa natura del problema “prima l’uovo o la gallina?”, in quanto come fanno gli utenti a sincronizzarsi se non possono comunicare? Sono, in realtà state, proposte varie soluzioni, che spaziano da un complesso schema pseudo-casuale a tecniche di

accesso casuale più standard come ALOHA. Una tecnica innovativa prevede la creazione di un canale basato su CSMA a banda stretta per l’instaurazione della connessione, che consente ai nodi di effettuare la sincronizzazione dei codici ed può aiutare anche il power control e la stima del canale.

L’assenza di un controllo centralizzato, inoltre, rende di non facile soluzione altre due problematiche strettamente legate tra loro. La prima consiste nello stabilire un protocollo di assegnamento del codice, in modo che a distinti terminali siano associati codici distinti. Si tratta di un problema banale in una rete piccola, ma diventa complicato in reti di grandi dimensioni, in cui il numero di sequenze di spreading diviene più piccolo del numero di terminali e la conseguente necessità di un riuso spaziale di esse (il numero di codici è di solito vincolato dallo spettro disponibile e dal rate informativo richiesto). Sono stati proposti diversi protocolli di assegnamento [56,57,58]: in essi, in pratica, si cerca di assegnare codici con il vincolo che a tutti i nodi vicini a un certo nodo siano assegnati codici diversi. La seconda problematica, dipendente strettamente dalla prima, consiste nel determinare un protocollo per decidere quali codici propriamente usare per la trasmissione di un certo pacchetto verso una certa destinazione e per monitorare il canale prima della ricezione di un pacchetto [59]. Un tale protocollo può essere receiver-based, trasmitter-based o ibrido. In un protocollo receiver-based, il trasmettitore, per lo spreading del pacchetto, usa il codice del ricevitore desiderato, mentre un terminale idle monitora costantemente il proprio codice. Questo approccio semplifica la circuiteria del ricevitore, poiché quest’ultimo non deve monitorare l’intero insieme di codici presente nella rete. Sfortunatamente, anche sotto un corretto assegnamento dei codici, sono ancora possibili collisioni primarie, ossia che avvengono tra segnali che sono stati espansi con lo stesso codice. Ad esempio, due nodi “non vicini” tra loro (cioè fuori da entrambi i rispettivi range trasmissivi) A e C, con due codici differenti, possono avere un vicino comune, il nodo B, che ha un suo codice: se A e C contemporaneamente tentano di trasmettere a B, avviene una collisione perché usano lo stesso codice, ossia quello di B (problema analogo all’hidden terminal problem). Un modo per garantire che non avvengano collisioni primarie è usare codici diversi associati ai segnali trasmessi simultaneamente o, in alternativa, far precedere la trasmissione da una fase di controllo del canale. Un altro svantaggio dell’approccio receiver-based è il fatto che inviare un messaggio in broadcast imporrebbe a un trasmettitore di inviare tale messaggio in unicast ad ogni ricevitore, usando i rispettivi codici. In un protocollo di spreading-code di tipo trasmitter- based, invece, deve essere assegnato ad ogni terminale un codice per la trasmissione e i ricevitori devono essere in grado di monitorare l’attività dell’intero insieme di codici pseudo-casuali. Con un tale metodo, teoricamente le collisioni primarie non possono accadere. In più, il broadcast è intrinsecamente supportato. Il grosso svantaggio è che la circuiteria dei ricevitori deve essere molto

complessa e costosa e, soprattutto, questo approccio causa un consumo inutile di energie da parte dei ricevitori non destinatari dei pacchetti. Ciascun nodo a cui arriva una trasmissione, infatti, deve risalire all’indirizzo di destinazione, presente nell’header del pacchetto, per capire se è uno dei receiver desiderati. Tuttavia sono possibili anche approcci ibridi: in [59] sono proposti due schemi ibridi, common transmitter-based protocol e il receiver-transmitter-based protocol. Nel primo, il campo dell’header del pacchetto che contiene gli indirizzi di sorgente e destinazione sono espansi usando un codice comune, mentre il resto del pacchetto viene espanso mediante il codice del trasmettitore. Un terminale idle costantemente monitora il codice comune: se riconosce il proprio indirizzo nel campo di destinazione, il nodo seleziona il codice del trasmettitore per ricevere il resto del pacchetto. Il problema nasce quando più trasmettitori trasmettono contemporaneamente allo stesso ricevitore. Il secondo protocollo ibrido prevede l’assegnamento a ogni nodo di due codici di espansione, uno per la ricezione e uno per la trasmissione. I campi dell’header di un pacchetto che contengono gli indirizzi di sorgente e di destinazione, vengono espansi usando il codice del ricevitore desiderato, mentre il resto del pacchetto è espanso col codice del trasmettitore. Un terminale idle monitora costantemente il suo codice di ricezione: se riconosce il proprio indirizzo e possiede il codice della sorgente, usa questo per recuperare il resto del pacchetto. Uno svantaggio è che se due nodi trasmettono contemporaneamente allo stesso ricevitore, questo non può decodificare completamente l’informazione proveniente da ciascuna sorgente. Inoltre, il numero di codici da assegnare con questo metodo sarebbe doppio. Esiste anche un altro approccio, detto pairwise-based, in cui a ciascuna coppia di nodi, viene assegnato un unico codice: in tal modo il trasmettitore avrà una tabella di assegnamento in cui cercherà il codice da usare per trasmettere ad un certo ricevitore; quest’ultimo dovrà comunque monitorare un insieme di codici simultaneamente, cosa che, come si è detto, rende complessa l’implementazione circuitale del dispositivo. Inoltre il numero di codici necessari per un tale schema cresce eccessivamente col numero di nodi presenti. A causa del dinamismo che caratterizza la topologia, è poi necessario che la distribuzione dei codici venga aggiornata nel tempo. Questa fase di recoding determina un ulteriore overhead per l’acquisizione del canale da lato ricevitore e la necessità di risincronizzazione tra sender e receiver. Si tratta di un processo pesante e costoso in termini di risorse, che deve esser ridotto il più possibile [63].

Finora sono stati proposti diversi protocolli MAC basati su CDMA per le MANET [58,59,60,61,62]. Tutti si basano su un accesso casuale al canale, ossia un nodo che ha pacchetti da trasmettere può farlo quando vuole (possibilmente con un preventivo scambio di RTS/CTS), senza tener conto dello stato del canale: in tal caso, si parla infatti di random access CDMA (RA-CDMA). Sotto un corretto assegnamento dei codici e un appropriato schema di spreading-code, questi protocolli RA-

CDMA garantiscono assenza di collisioni primarie. È purtroppo presente un altro tipo di problematica, che è legata alla non perfetta ortogonalità che può caratterizzare i codici di espansione: tale problematica è nota come near-far effect.

Documenti correlati