This is an old revision of the document!
Artiom Fascian - Master AAC Delia Popescu - Master AAC
O retea ad-hoc reprezinta o colectie de noduri mobile care formeaza o retea instantanee, fara o topologie fixa. Intr-o astfel de retea, fiecare nod se comporta atat ca router cat si ca host, in mod simultan. Orice nod poate abandona reteaua sau poate restabili conexiunea in orice moment, starea celorlalte noduri ramanand neschimbata. Viziunea retelelor mesh se bazeaza pe puterea numerelor. Spre deosebire de sistemele de telefonie mobila, care pierd semnalul cand mai multe dispozitive se siteaza intr-un perimetru mic, interconecatarea retelelor wireless creste pe masura ce creste numarul de noduri din retea. Atat timp cat exista o densitate sucienta, o singura retea de noduri poate acoperi zone nelimitate.
Protocolul de baza folosit in implementarea proiectului este Destination-Sequenced Distance Vector (DSDV). Protocolul DSDV este o modicare a protocolului de rutare conventional Bellman-Ford. Acesta abordeaza dezavantajele legate de proprietatile slabe ale protocolului de rutre RIP (Routing Information Protocol), in ceea ce priveste legaturile de retea intrerupte pentru retele de rutare ad-hoc. DSDV adauga un atribut nou, un sequence number, pentru fiecare intrare din tabela de rutare fata de RIP-ul conventional. Utilizand cel mai recent adaugat sequence number, nodurile mobile pot obtine informatii referitoare informatiile de rutare de la nodurile noi, prevenind astfel formarea loop-urilor de rutare. In DSDV fiecare nod mobil dintr-o retea ad-hoc mentine o tabela de rutare,care listeaza toate destinatiile disponibile, metrica si next-hop-ul pentru fiecare destinatie si sequence number gederat de nodul destinatie. Utilizand o astfel de tabela de rutare, stocata in ecare nod, pachetele sunt transmise direct intre nodurile din retea. Fiecare nod dintr-o retea ad-hoc updateaza tabela de rutare periodic sau cand este disponibila o informatie noua, pentru a mentine consistenta tabelei, tinand cont de schimbarea dinamica a topologiei retelei. Intr-un proces de update al tabelei de rutare, nodul original eticheteaza fiecare pachet de update cu un sequence number, pentru a distinge update-urile. Sequence number este un numar monoton crescator, care identica in mod unic fiecare update de la un nod dat. Ca rezultat, daca un nod primeste un pachet de update de la un alt nod, sequence number trebuie sa e cel pun egal cu sequence number-ul nodului corespondent din tabela de rutare. Altfel, noua informatie de rutare receptionata nu mai este valida si trebuie aruncata. Prin modicarile aduse, DSDV constituie un protocol de rutare mai adecvat pentru retelele ad-hoc.
Poiectul a fost implementat pe principiul protocolului DSDV, folosind aceleasi reguli generale de implementare. Aplicatia realizata are capabilitatea de a scalata la un numar de aproximativ 1000 de noduri. La nivelul fiecarui nod din retea, pentru receptionare de mesaje, transmiterea de mesaje si stocarea tabelei de rutare este implementata o stiva, care lucreaza pe principiul initializare, push, pop, empty. Pentru procesul de initializare a tabelei de rutare, adaugarea unui nod in retea, cautarea unei intrari,respectiv stergere unei intrari am introdus o lista simplu inlantuita. Primul pas in implementarea retelei constituie asignarea unui identicator unic pentru ecare nod in parte, dupa modelul DHCP. In modelul de implementare am folosit o valoare “max” care stocheaza numarul maxim de identicare al ultimului nod din retea.
Exemplu pentru un numar de patru noduri
* Pentru autenticarea nodului 1 in retea, acesta trimite un pachet de broadcast “Hello”, care consta intr-o cerere de conexiune in retea. Fiind primul nod, nu va primi replay la mesaj si isi asigneaza valoarea max=1. * Nodul 2 trimite cerere de autenticare, primita doar de nodul 1, care ii trimite replay cu valoarea max=1. Nodul 2 asigneaza valoarea pentru max=2 si trimite mesaj de broadcast cu noua valoare pentru max . * Nodul 3 trimite mesaj de broadcast , “Hello”, care ajunge la nodurile 1 si 2. Acestea raspund cu valoarea pentru max=2, nodul 3 trimite mesaj de broadcast catre nodurile din retea cu max=3. * Nodul 4 trimite mesaj de broadcast,“Hello”, care ajunge la nodurile 1,2,3.Acestea trimit inapoi mesaj cu valoarea curenta pentru max=3. Nodul 4 receptioneaza mesajul, updateaza valoarea max la 4 si trimite mesaj de broadcast in care max=4.
In Figura 1 este ilustrat procesul de stabilire a conexiunii prezentat mai sus. In Figura 2 sunt ilustrate mesajele transmise pentru sincronizarea valorii max. In cazul in care un nod din retea devine indisponibil( nodul 1 in Figura 3), pentru reconectarea acestuia se reia procesul ilustrat in gurile 3 si 4. Nodul 1 trimite un mesaj de broadcast “Hello ” catre toate celelalte noduri din retea. Primeste replay cu in care valoarea max=4 , actualizeaza max=5 si trimite mesaj pentru sincronizarea noii valori.
Figura 1 Stabilirea legaturii de date
Figura 2 Sincronizarea
Figura 3 Stabilirea legaturii de date dupa deconectarea unui nod
Tabela de rutare contine 3 intrari: destinatie, next hop si numarul de hopuri pana la destinatie. Fiecare nod din retea contine propria tabela de rutare. Transmisia pachetelor in retea de la un nod sursa la un nod destinatie se realizeaza in conformitate cu datele din tablea de rutare, pentru a se folosi calea cea mai scurta. Dupa procesul de asignare a unui identicator pentru un nod nou din retea, nodurile deja existente, care au receptionat mesajul de broadcast cu noua valoare pentru max, trimit mesaj catre nodul nou cu tablela de rutare. Noul nod receptioneaza primul mesaj cu tabela de rutare si stocheaza informatiile in stiva. Pentru toate mesajele receptionate ulterior, secvential, verica datele din tabela pentru a detecta eventualele modicari, respectiv o tabela de rutare noua. Daca informatiile nu difera pastreaza prima tabela, in caz contrar arunca prima tabela si stocheaza datele receptionate ulterior. Next-hop-ul se calculeaza conform protocolului DSDV, incrementand valoarea unui metric de catre fiecare nod in parte, la receptionarea tabelei. Fata de protoculd DSDV, in aplicatia implementata nu se realizeaza updateul tabelei de rutare.
In cazul procesului de trezire a nodurilor din starea de sleep, se procedeaza dupa cum urmeaza: Se considera toate nodurile aflate in starea de sleep. * In momentul in care un nod (exemplu nodul 1 in Figura 4) doreste sa transmita un mesaj la un alt nod, destinatie, (nodul 4 in exemplul dat)trimite pachete de tip broadcast cu apel de wake up.
Pentru mai multe informatii, gasiti raportul prezentat in detalii.