This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
proiecte:stiva-wds [2014/02/05 19:13] 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 " | In modelul de implementare am folosit o valoare " | ||
maxim de identicare al ultimului nod din retea. | maxim de identicare al ultimului nod din retea. | ||
+ | |||
**Exemplu pentru un numar de patru noduri** | **Exemplu pentru un numar de patru noduri** | ||
Line 39: | Line 40: | ||
Primeste replay cu in care valoarea max=4 , actualizeaza max=5 si trimite mesaj pentru sincronizarea noii valori. | Primeste replay cu in care valoarea max=4 , actualizeaza max=5 si trimite mesaj pentru sincronizarea noii valori. | ||
- | <imgref https:// | ||
- | <imgref schema.jpg> | ||
+ | {{: | ||
+ | = Figura 1 Stabilirea legaturii de date = | ||
+ | |||
+ | |||
+ | {{: | ||
+ | = Figura 2 Sincronizarea = | ||
+ | |||
+ | {{: | ||
+ | = 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 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. | ||
+ | |||
+ | === 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, | ||
+ | * 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 = | ||
+ | {{: | ||
+ | |||
+ | === 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:// | Pentru mai multe informatii, gasiti [[https:// | ||
+ |