260 likes | 400 Views
Porting the ( , t) protocol to the Sharp Zaurus PDA. Dr. Taieb Znati Anandha Gopalan Jeff Leitman. May 2006. Goal Setup Review of DDCA & ICRP DDCA Timer Problem & Solution BitBake Problems with Netfilter & libipq Solution: Modified ICRP Demo. Overview. Goal .
E N D
Porting the (, t) protocol to the Sharp Zaurus PDA Dr. Taieb Znati Anandha Gopalan Jeff Leitman May 2006
Goal Setup Review of DDCA & ICRP DDCA Timer Problem & Solution BitBake Problems with Netfilter & libipq Solution: Modified ICRP Demo Overview
Goal • Port the (,t) protocol to the PDA • Provide routing protocol for net applications • PDA’s are more portable vs. laptop, especially for first responders
Setup • Sharp Zaurus SL-5500 • 206MHz SA-1100 StrongARM • 64MB DRAM and 16MB Flash • OpenZaurus 3.5.4 • Linux kernel version: 2.4.18 • Build Tool: BitBake
Review: DDCA & ICRP • Very brief review
Clustering Algorithm Example Cluster creation Join-Timer Expiration Create (Orphan) Cluster(s) 2 Join Req 1 4 0 3 Join-Timer Expiration Broadcast Join-Request Restart Join-Timer 5 Nodes with lowest identifiers or that are disconnected create new clusters---others continue seeking feasible cluster.
Clustering Algorithm Example Link and node activation Adopt-Timer Expiration---Node-0, Node-5, and Node-4 Send Adopt-Request C1 2 Adopt Req 1 4 0 3 Adopt Req Join Req Adopt Req 6 5 Node Activation Send Join-Request Node movement results in a new link between node-0 and node-5.
Clustering Algorithm Example Response phase Send/Receive Adopt-Response C1 2 Adopt Resp 1 4 0 3 Join Resp Adopt Resp 6 5 Send/Receive Join-Response Node-4 receives a join-request and, hence, abandons its attempt to seek adoption---responding to Node-6’s join-request instead.
Clustering Algorithm Example Cluster expansion C1 2 1 Routing Update 4 0 3 6 5 Join-Timer Expiration Join Cluster Having received responses before timing out, Node-5 and Node-6 join clusters.
Clustering Algorithm Example Cluster disconnection Cluster Disconnection Send Join-Request C1 2 1 4 0 3 C4 Join Req 6 5 Link failure results in Node-0 and Node-5 detecting a cluster disconnection. Each node reverts to un-clustered state.
Clustering Algorithm Example Response phase C1 2 Receive Join Response 1 4 0 3 C4 Join Resp 6 5 Node-0 is successful in its join request, whereas, Node-5 is totally disconnected.
Clustering Algorithm Example Adopt response phase C1 2 1 4 0 3 C4 Adopt Resp 6 5 Receive Adopt-Response Node-5’s request is received by two nodes in the same cluster---each responds with an ‘adoption invitation’.
Clustering Algorithm Example Cluster expansion by adoption C1 2 Join-Timer Expiration Join Cluster 1 4 0 3 C4 Routing Update 6 5 On timer expiration Node-5 joins cluster C1 by adoption.
Approach • Keep same code where possible • More efficient to use existing code rather than re-write from scratch • Make sure the kernel has the features we need: • Multiple timers (for DDCA protocol) • Netfilter hooks (for dynamic, reactive version of ICRP) • libipq (supporting library / data structure for ICRP)
Timer Problem • Need three timers for DDCA: • JOIN TIMER • ADOPT TIMER • Creating & modifying clusters • HELLO TIMER • Keep-alive for existing connections • Kernel version: Embedix 2.4.18-rmk7-pxa3 • Latest kernel that will run on the Zaurus • doesn’t support more than one system timer without patch (that does not exist for this version)
Timer Solution • DDCA Timer Mask implemented • Simulates three timers with one system timer • FIFO Queue • Each element of the queue contains: • Which Timer (enumerated type) • Time To Live (i.e., seconds until expiration)
DDCATimerMask: Example t=1 t=2
DDCATimerMask: Example t=1 t=2 t=3
DDCATimerMask: Example t=1 t=2 t=3 t=4
BitBake: To Compile the Kernel • Bitbake is OpenEmbedded.org’s build system for embedded devices • Use to compile different Linux kernels for a variety of PDAs • easier to use (in theory) than manually using tools like patch and make
BitBake: Trouble in the Kitchen • Slow & Large • Lack of adequate documentation • sparse logs • no error codes / docs • Why are we using this again? • OpenZaurus won’t boot non-OE compiled kernels • No luck with manually compiled kernels • Tried multiple different kernel versions & patches • None of these worked
Netfilter & libipq • Netfilter hooks not working correctly • mismatched versions of libraries (rmk7 vs arm-gcc libraries) • Package manager tools not working correctly • apt-get and yum refuse to function properly on Pitt’s network • Must manually resolve these dependencies • Libipq’s ipq_list needed debugging
Solution: User-space ICRP • Operate completely in user-space • pro-active table-driven protocol via HELLO messages • No need to modify kernel • Skip over libipq & netfilter requirement • Trade-off: increased message size • Each HELLO message is slightly larger to accommodate routing table info • Frequency of messaging remains the same
Demo • Cluster formation / interaction • Multi-hop Routing • SSH / SCP over multi-hop path
Thank you! • Questions?