• Non ci sono risultati.

3 Architettura del sistema

3.1 Ambiente di simulazione

3.1.4 iTETRIS Control System

Come illustrato nella Figura 3.1 la parte centrale della piattaforma di simula- zione è costituita da iCS. Questo modulo oltre a permettere l’interazione fra i due simulatori, come illustrato nei precedenti paragrafi, fornisce anche un’interfaccia utente per la creazione di applicazioni di gestione del traffico. Come mostrato in figura ogni interazione tra i componenti della piattaforma ha come origine o come destina- zione questo modulo, è quindi di vitale importanza la sua ottimizzazione. L’intera- zione fra NS-3 e SUMO avviene sempre attraverso iCS, mai in modo diretto, a diffe- renza di quanto antecedentemente studiato da altre soluzioni che prevedevano l’ac- coppiamento diretto fra SUMO ed NS-2 (una versione precedente di NS-3) [KTW08]. Per ottenere un’interazione efficiente fra i vari componenti del sistema, durante lo sviluppo di iCS sono state valutate varie tecnologie alternative come CORBA e SOAP, scegliendo infine di utilizzare socket IP [Man09]. Nonostante questo mecca- nismo sia semplice e di basso livello, iCS può comunicare con gli altri blocchi dell’ar- chitettura attraverso protocolli sviluppati appositamente, velocizzando le simulazioni e riducendo al minimo la quantità di dati scambiati.

L’interazione fra iCS ed i due simulatori è ottenuta attraverso una comunica- zione bidirezionale. iCS controlla l’esecuzione di SUMO per emulare il movimento degli veicoli secondo lo scenario stradale utilizzato e può inviare una serie di comandi per specificare le azioni da compiere sull’ambiente simulato con lo scopo di modifi- care il flusso del traffico. Allo stesso tempo iCS richiede a SUMO la posizione dei

38

veicoli per aggiornare gli altri moduli del sistema, nel caso la posizione sia variata nel tempo. Allo stesso modo iCS comanda la simulazione delle comunicazioni wireless in NS-3 schedulando i messaggi che devono essere inviati, aggiornando i nodi con le posizioni aggiornate ottenute da SUMO e recuperando i messaggi che sono stati rice- vuti correttamente per poterli comunicare alle applicazioni utente che provvederanno a processarli.

Le principali funzioni di iCS sono quelle di attivare le differenti piattaforme, impostare l’ambiente di simulazione e di controllare e coordinare l’esecuzione della simulazione. Quando viene avviata una simulazione iCS provvede a leggere i propri file di configurazione e ad avviare e configurare correttamente i simulatori e le appli- cazioni. Al termine di questa fase di configurazione tutti i moduli sono stati inizializ- zati correttamente ed è possibile iniziare ad eseguire la simulazione. Il controllo e la coordinazione dei vari moduli della piattaforma durante l’esecuzione è di vitale im- portanza per ottenere risultati utili alla valutazione del comportamento del sistema studiato. È compito di iCS garantire che tutti i blocchi della piattaforma mantengano una sincronizzazione sia nel tempo che nello spazio: occorre infatti ricordare che sia i due simulatori sia le applicazioni, benché siano stati accorpati all’interno di questa singola piattaforma, sono programmi separati che eseguono in modo indipendente. La sincronizzazione temporale è indispensabile per assicurare che gli eventi eseguiti dai vari moduli seguano un ordine corretto, che le azioni svolte siano correttamente sin- cronizzate e correlate fra di loro e che il tempo di simulazione sia incrementato cor- rettamente in ogni componente della piattaforma. La posizione dei nodi influenza in modo diretto le loro capacità di comunicazione con altri veicoli e dispositivi infra- strutturali ed influenza l’esecuzione dei protocolli applicativi, è pertanto indispensa- bile una opportuna sincronizzazione nello spazio i vari moduli del sistema.

Per ottenere questo comportamento iCS introduce una propria astrazione di nodo, che associa ad ogni veicolo di SUMO un nodo all’interno di NS-3 in modo che ogni dispositivo ITS simulato abbia una propria rappresentazione specifica all’interno di ogni blocco dell’architettura. Tramite questa astrazione è possibile coordinare cor- rettamente le azioni che devono compiere i nodi ed è possibile aggiornarne corretta- mente le proprietà.

L’esecuzione di una simulazione in iTETRIS è suddivisa in step di sincronizza- zione di durata fissa. Ogni step si compone di varie fasi come descritto in Figura 3.3: l’esecuzione inizia con una fase di esecuzione di NS-3 seguita dall’esecuzione di SUMO, da una fase nella quale sono eseguite le applicazioni ed termina con una fase dedicata alla preparazione del passo successivo. La durata predefinita di uno step è di

39

un secondo, cioè per ogni ciclo SUMO ed NS-3 eseguono tutti gli eventi pianificati nell’intervallo di tempo di un secondo. Questo intervallo di tempo non va confuso con il periodo necessario all’esecuzione di questi eventi, infatti ci si riferisce al tempo interno alla simulazione, non a quello reale impiegato dal simulatore per simulare tali eventi. Per ottimizzare l’esecuzione dei protocolli sviluppati in questo progetto, il tempo di simulazione è stato ridotto e reso configurabile, con un valore minimo di un millisecondo (maggiori informazioni saranno presentate nel paragrafo 5.2).

L’interfaccia utente messa a disposizione dello sviluppatore da iCS permette di utilizzare più applicazioni contemporaneamente, che sono eseguite in successione nella terza fase di ogni step di simulazione. Queste applicazioni sono indipendenti fra di loro e sono collegate ad iCS attraverso una socket IP. All’avvio di una simulazione iCS si occupa del loro avvio e della loro configurazione attraverso le impostazioni specificate nei file di configurazione. L’utilizzo di un collegamento tramite socket lascia la massima libertà allo sviluppatore sia nella scelta del linguaggio di program- mazione che nella loro realizzazione.

Figura 3.3: Sequenza di operazioni svolte da iCS ad ogni

40