RPL - malikolibri/contiki-iris-examples GitHub Wiki
uIP koristi RPL protokol za rutiranje (skraćeno za Routing Protocol for Low Power and Lossy Network). Ovaj protokol za rutiranje je dizajniran tako da je optimizovana komunikacija: više tačaka prema jednoj tački. Takva konfiguracija se obično i viđa kod senzorskih mreža gde grupa čvorova šalje podatke ka jednom centralnom supernodu (superčvoru).
RPL je distance vector protocol koji koristi destination orientated directed acyclic graph (DODAG) za rutiranje. Jedan od čvorova se proglašava za koreni čvor (root node - supernode) DODAG-a , a ostali čvorovi grade mrežu tipa više tačaka->jedna tačka (multipoint-to-point). Međusobnim uvezivanjem čvorova dobija se struktura obrnutog stabla. Svaki čvor ima DODAG rang koji govori o udaljenosti čvora od korena. Takođe, svaki čvor održava listu roditeljskih čvorova od kojih je jedan selektovan kao prioritetan roditelj.
####Kako se kreira DODAG?####
Da bi se kreirao DODAG, jedan čvor se proglašava za koreni čvor i on počinje da emituje DIO (DODAG information object) poruku koja sadrži informaciju o rangu pošiljaoca. Slanje poruke se vrši link-local multikastingom pa svi čvorovi u dometu radia primaju DIO poruku. Čvor koji primi takav DIO paket određuje svoj rang (za jedan veći od ranga roditelja). Posle inicijalnog slanja, novo pridruženi čvorovi takođe emituju DIO poruku čvorovima u svom radio dometu.
Vrlo verovatno će se desiti da određeni čvor primi DIO poruke od dva ili više čvorova. Adrese čvorova koji su poslali DIO poruku se čuvaju u tabeli roditelja. Međutim, samo je jedan prioritetan (preferred) roditelj, a to je onaj sa najpovoljnijom metrikom (najboljom radio vezom). Prioritet roditelja nije stalan već se menja u zavisnosti od stanja u mreži. U slučaju da prioritetni roditeljski čvor iz nekog razloga prestane sa funkcionisanjem ili je radio signal slab, on gubi svoj prioritetni status. Čvor sa najboljom metrikom iz roditeljske tabele biva proglašen prioritetnim.
Ovim mehanzmom je osigurano da se slanje paketa, iz stabla ka korenu, odvija uvek optimalnom putanjom.
Da bi se paket poslao u suprotnom smeru (od korena ka nekom čvoru u stablu) korisi se tabela ruta koju poseduje koreni čvor. Ona se formira tako što svi čvorovi stabla periodično šalju DAO (DODAG advertisement object) poruku ka korenu. Kada neki čvor pošalje DAO poruku ka korenu preko svog neposrednog roditelja, roditelj dopisuje svoju adresu u DAO poruku i šalje dalje ka korenu. Kada DAO poruka stigne do korena, koreni čvor ima informaciju o optimalnoj putanji do svakog čvora mreže. Kod Contiki OS-a svaki međučvor takođe ima tabelu rutiranja za svoje podstablo.
Slanje poruke od čvora do čvora u stablu je najnepovoljnij slučaj jer mnoge poruke prvo moraju da odu ka korenu DAG-a, pa onda nakon toga da se iz korena spuštaju ka ciljanoj destinaciji.