Un protocol MAC pentru WSN

Alexandru Copoţ - SRIC Florin Donţu - AAC

Introducere

Retelele de senzori wireless capata din ce in ce mai multa atentie pe masura ce tehnologia permite realizarea de noduri mai performante si cu un consum mai redus. Insa comunicatia dintre noduri continua sa fie o problema si constituie unul din cei mai mari consumatori de energie din retea. Proiectul nostru incearca sa creeze un protocol MAC care sa permita o comunicatie cat mai eficienta intr-o retea de senzori wireless raportat la consum.

Descriere Generala

Protocolul implementat ofera o serie de facilitati de comunicatie:

  • Rutare
  • CSMA/CA
  • Sincronizare ceas/timpi sleep

Design Hardware

Ca platforma hardware folosim nodurile Sparrow v3. Fiind un proiect axat pe dezvoltarea de software pentru aceste noduri, am utilizat cu precadere simulatorul Avrora. Acesta ne usureaza dezvoltarea si testarea unei intregi topologii de noduri.

Design Software

Adresare si rutare

Nodurile sunt identificate prin adrese numerice pe 8 biti. Exista o adresa speciala cu valoarea 0xFF utilizate in mesajele de broadcast. Sunt permise astfel cel mult 255 de noduri.

In scopul rutarii pachetelor, nodurile utilizeaza o tabela de rute cu destinatiile accesibile si urmatorul nod catre acestea. Tabela de rutare este completata prima oara in faza initiala de comunicare. Unul sau mai multe noduri trimit mesaje broadcast ce sunt folosite de receptor pentru a stabili o ruta catre initiator si catre nodul anterior receptorului.

Pachetele ulterioare receptionate sunt folosite de asemenea pentru a stabili rute directe cu nodurile invecinate.

Metrica folosita in rutare este numarul de hopuri. Acesta se stabileste avand in vedere ca fiecare frame de broadcast din faza initiala este transmis cu o anumita valoare TTL ce scade la fiecare forwardare a frameului.

Sincronizare ceas

Exista doua posibilitati de sincronizare intre noduri pe care le-am luat in calcul:

  1. Sincronizare relativa a momentelor de wake-up
  2. Sincronizare absoluta a ceasului

Prima varianta presupune ca ceasurile nodurilor sunt deja apropiate ca valoarea. Problema pe care incearca sa o rezolve este desincronizarea care poate sa apara cand anumite noduri au nevoie de mai mult timp de procesare. In aceasta situatie este posibil ca perioada activa sa nu se mai suprapuna si sa se piarda mesaje. Solutia noastra sincronieaza momentuld de wake-up in nodurilor invecinate facand o medie a acestora. In acest fel, protocolul devine dinamic si se adapteaza la necesarul fiecarui nod. Pentru a evita situatia in care perioada activa sa devina prea scurta sau ce inactiva prea lunga, se iau in calcul si limite pentru timpul final calculat.

A doua varianta de sincronizare are rolul de a asigura o diferenta cat mai mica intre valorile ceasurilor nodurilor vecine. Practic se sincronizeaza contoarele de timp ale nodurilor, asemanator unui sistem Network Time Protocol. Avand un ceas sincronizat absolut face ca toate operatiile cu durate relative sa aiba un comportament asemanator pe orice nod.

Pentru determinarea perioadelor de sleep/momentelor de wake-up se folosesc urmatoarele formule: 
 \[
   S = \sum_{n \in neighbours}^{} (n.local\_time + n.wakeup - n.sync\_rcv\_time)
  \]

  \[
  next\_sleep =  \frac{old\_sleep + S}{N + 1} 
  \]

Implementare

Toate mesajele transmise in retea au in format generic descris de:

	struct frame {
	  uint8_t ll_src;
	  uint8_t ll_dst;
	  uint8_t src;
	  uint8_t dst;
	  uint8_t flags;
	  uint8_t ttl;
	  uint8_t data[];
	};

Pachetele de control au setat unul din flag-urile: FLAG_RTS, FLAG_CTS, FLAG_TIME.

Tabela de rutare ofera practic atat informatii despre rutare cat si despre ceasurile nodurilor. O intrare in tabela de rutare:

	struct route {
	  uint8_t  dst;
	  uint8_t  next;
	  uint8_t  hops;
	  uint32_t this_time;
	  uint32_t dst_time;
	  uint16_t dst_sleep;
	  uint8_t  used;
	};

Rezultate

Am implementat functionalitatile prezentate anterior. Acestea au fost testate pe diverse topologii folosind Avrora.

Algoritmii de sincronizat ceasul au fost testati si separat, in afara protocolului de comunicatie, pentru a vedea cum se comporta la aparitia decalajelor de timp. Rezultatele au aratat ca dupa sute si mii de iteratii, ceasurile nu s-au desincronizat mai mult decat erau la pornire.

paper.pdf

mac.zip

Bibliografie/Resurse

iothings/proiecte/2014/a-mac-protocol-for-wsn.txt · Last modified: 2021/12/06 22:26 by dan.tudose
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0