User Tools

Site Tools


proiecte:stiva-wds

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
proiecte:stiva-wds [2014/02/05 18:56]
delia_madalina.popescu [Implementare]
proiecte:stiva-wds [2014/02/07 12:58] (current)
artiom.fascian
Line 27: Line 27:
 In modelul de implementare am folosit o valoare "max" care stocheaza numarul In modelul de implementare am folosit o valoare "max" care stocheaza numarul
 maxim de identi care al ultimului nod din retea. maxim de identi care al ultimului nod din retea.
 +
 **Exemplu pentru un numar de patru noduri** **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. + * 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 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 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.+ *  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.
 +
 +
 +{{:proiecte: schema.jpg | Figura 1}}
 += Figura 1 Stabilirea legaturii de date =
 + 
 +
 +{{:proiecte: schema-update.jpg | Figura 2}}
 += Figura 2 Sincronizarea =
 +
 +{{:proiecte: schema-fail.jpg | 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 =
 +{{:proiecte: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 [[https://elf.cs.pub.ro/wsn/wiki/_media/proiecte/doku.pdf|raportul]] prezentat in detalii. Pentru mai multe informatii, gasiti [[https://elf.cs.pub.ro/wsn/wiki/_media/proiecte/doku.pdf|raportul]] prezentat in detalii.
 +
proiecte/stiva-wds.1391619368.txt.gz · Last modified: 2014/02/05 18:56 by delia_madalina.popescu