|
Appunti informatica |
|
Visite: 2557 | Gradito: | [ Picolo appunti ] |
Leggi anche appunti:Basi teoriche della trasmissione datiIl livello uno (Fisico) In questo capitolo verranno illustrati gli aspetti Pacchetti di livello MACPacchetti di livello MAC Il pacchetto che viaggia sulla radio è composto Protocollo di funzionamento a regime della reteProtocollo di funzionamento a regime della rete All'avvio ogni nodo alloca |
All'avvio ogni nodo alloca un canale speciale nella propria tabella delle connessioni: questo garantisce che periodicamente e per un piccolo periodo di tempo la radio rimanga sicuramente accesa, anche se è attivo il protocollo di risparmio energia.
Quando l'utente invoca i comandi di esecuzione di una query, il protocollo di funzionamento della rete si attiva: esso prevede che il server metta in coda i comandi da inviare ai sensori e li invii non appena possibile, in base al tempo di accensione della radio.
Essendo garantita una finestra temporale fissa in tutti i casi arriva un istante in cui il server può inviare ai nodi coinvolti un pacchetto: in quell'occasione è previsto l'invio di un EE_STOP. Questo messaggio serve a sospendere il protocollo di energy efficiency e far sì che la radio riceva tutti i comandi che ogni nodo deve ricevere. Come già detto la costruzione dei canali risulta particolarmente critica: il mancato arrivo anche di una sola connect, data l'assenza di un meccanismo di ack, causerebbe il fallimento dell'intera esecuzione. Il pacchetto EE_STOP è di formato analogo all'EE_START ma causa l'operazione inversa sospendendo quello che l'altro pacchetto aveva attivato. Le radio rimangono quindi accese per ricevere istruzioni sull'esecuzione della query e il server può programmare i nodi inviando loro i comandi necessari.
32 bit
Figura 14: messaggio di tipo EE_STOP
Dopo l'invio dell'EE_STOP, il server invia comandi separati ai singoli nodi tramite pacchetti ASYSEND_WITH_ACK: questo tipo di messaggio prevede la ricezione di un acknowledgement prima di procedere con l'invio del successivo. Infatti è fondamentale che l'ordine di arrivo dei messaggi sia quello imposto affinché le disposizioni inviate nella rete producano il risultato corretto e si creino i flussi per il trasferimento dei dati da un sensore ad un altro e poi verso il server.
Lo stesso formato di pacchetto è utilizzato per il tipo ASYSEND, analogo al precedente ma senza necessità di invio dell'acknowledgement: questo tipo è usato dal sink per inoltrare i dati ricevuti dai sensori coinvolti verso il server.
Figura 15: messaggio di tipo ASYSEND_WITH_ACK
Il server programma ogni nodo diversamente per eseguire la query: esistono diversi tipi nell'header di livello applicazione dei pacchetti: in un primo momento, in base al piano di esecuzione derivato per la query, viene inviato un comando per costruire un canale tra due nodi che devono scambiarsi dati.
A questo punto il Query Executor invoca l'operazione di connect: alla ricezione di questo tipo di pacchetto, dopo aver trasmesso l'ack, il nodo alloca le strutture dati e invia un pacchetto di tipo CONNECT al nodo destinatario.
Il pacchetto è formato da un header e da un payload come mostrato in figura 16: quest'ultimo è diviso in un identificatore di canale di 8 bit, streamrate che indica il valore temporale con il quale la query richiede i dati, size che indica la dimensione del payload e data, il payload vero e proprio, nel quale è contenuto il pacchetto di livello superiore.
Figura 16: messaggio di tipo CONNECT
Il nodo che lo riceve alloca anch'esso le strutture dati necessarie e il canale rimane attivo fino alla sua cancellazione: al momento dello stop di una query, comandato dall'utente tramite la gui, il server invia un comando di chiusura canale verso il nodo che deve iniziare tale operazione. Tale comando è inviato in un pacchetto di tipo ASYSEND_WITH_ACK. Il nodo che lo riceve crea un pacchetto di tipo DISCONNECT, contenente soltanto l'identificatore del canale e il payload, e lo spedisce verso l'altro capo del canale. Il formato è mostrato in figura 17.
Figura 17: messaggio di tipo DISCONNECT
Gli ultimi comandi che sono inviati nella rete per avviare la query sono sempre messaggi di tipo ASYSEND_WITH_ACK con un payload che contiene il comando StartQuery per lo strato applicazione. Alla ricezione di tali pacchetti un nodo può iniziare a spedire periodicamente i dati richiesti: questi viaggiano sulle connessioni stabilite precedentemente, con pacchetti di tipo SEND, composti dall'identificatore del canale e dal payload, contenente appunto i valori rilevati. Il pacchetto SEND è mostrato in figura 18.
send payload
Figura 18: messaggio di tipo SEND
Appunti su: comando ad un sensore payload header, |
|
Appunti Nutrizione | |
Tesine Medicina | |