Stiva WDS

Artiom Fascian - Master AAC Delia Popescu - Master AAC

Introducere

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 su cienta, o singura retea de noduri poate acoperi zone nelimitate.

Comunicatia

Protocolul de baza folosit in implementarea proiectului este Destination-Sequenced Distance Vector (DSDV). Protocolul DSDV este o modi care 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 fie care 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 fi ecare nod mobil dintr-o retea ad-hoc mentine o tabela de rutare,care listeaza toate destinatiile disponibile, metrica si next-hop-ul pentru fi ecare 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 fi ecare pachet de update cu un sequence number, pentru a distinge update-urile. Sequence number este un numar monoton crescator, care identi ca 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 modi carile aduse, DSDV constituie un protocol de rutare mai adecvat pentru retelele ad-hoc.

Implementare

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 fi ecarui 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 identi cator unic pentru ecare nod in parte, dupa modelul DHCP. In modelul de implementare am folosit o valoare “max” care stocheaza numarul maxim de identi care al ultimului nod din retea.

Exemplu pentru un numar de patru noduri

* Pentru autenti carea 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 autenti care, 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 = Figura 1 Stabilirea legaturii de date =

 Figura 2 = Figura 2 Sincronizarea =

 Figura 3 = Figura 3 Stabilirea legaturii de date dupa deconectarea unui nod =

Tabela de rutare

Tabela de rutare contine 4 intrari: destinatie, next hop, TTL 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 identi cator 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, veri ca datele din tabela pentru a detecta eventualele modi cari, 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 fi ecare nod in parte, la receptionarea tabelei.

Sleep si Wake-up

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.

  •  Primul nod care a receptionat pachetul de broadcast (nodul 2 in Figura 4) trece in starea de wake up si transmite mesaj de tip sleep catre nodul de la care a primit apel (nodul 1). Nodul initiator, dupa receptionarea mesajului, trece in starea sleep.
  •  Nodul care a ramas treaz trimite pachete de tip broadcast cu mesajul wake up catre nodurile vecine, dupa care procesul continua pana la nodul destinatie.
  • In orice moment exista un nod treaz care trimite mesaj de broadcast sa trezeazca nodurile vecine pentru perpetuarea mesajului pana la nodul destinatie.
  •  La capatul celalalt, nodul destinatie, dupa receptionarea mesajului,trimite mesaj de broadcast catre vecini pentru a anunta nodul sursa (care acum a devenit destinatie) de receptionarea mesajului. Prin urmare, procesul
  • detaliat anterior, se repeta in sens invers pentru acknowledge.
  •  Tabela de rutare este transmisa secvential, de catre nodurile aflate in starea wake, incepand de la nodul initiator, dupa transmiterea mesajului de wake up.

= Figura 4 = sleep.jpg

Update pentru tabela de rutare

Pentru a intelege daca un mesaj ar putea ajunge catre un nod, tabela de rutare necesita o actualizare. Problema aparenta in designul propus este deosebirea nodurilor care sunt in starea sleep de cei care sunt deconectati de la retea. In acest fel se poate considera doar timpul in care un nod este treaz.

Sa presupunem o retea cu 4 noduri prezentata in figura 4. Fiecare nod, pentru fiecare intrate din tabela de rutare are cate un TTL. Variabila data este responsabila pentru a diferentia un nod viu de unul ce e in starea sleep. De fiecare data cand un nod se trezeste acesta decrementeaza aceasta valoare. In designul propus, valoarea acesteia este 255 (maximum pe un octet). Daca destinatia unei intrari din tabela de rutare coincide cu adresa nodului, aceasta valoare nu se decrementeaza. La transmiterea tabelei de rutare, valoarea TTL se compara cu intrarile individuale din tabela. Daca TTL-ul este mai mare atunci se updateaza intrarea cu noile valori. In caz in care aceasta valoare ajunge la 0, intrarea din tabela este stearsa.

Concluzii

In cadrul acestei lucrari a fost pusa baza unei stive de comunicatie. Cercetarea pe parcursul implementarii acestui proiect a ajutat la o intelegere mai buna a ce inseamna o comunicatie intr-o retea ad-hoc.

Pentru mai multe informatii, gasiti raportul prezentat in detalii.

iothings/proiecte/2014/stiva-wds.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