260 likes | 407 Vues
This document outlines the process of porting the (α,t) protocol to the Sharp Zaurus PDA, aiming to provide an effective routing protocol for network applications, particularly for first responders due to the PDA's portability. It discusses setup, clustering algorithms, timer management, and issues with BitBake and Netfilter along with proposed solutions. The approach emphasizes using existing code for efficiency and highlights the need for timers within the DDCA protocol, also addressing challenges met during the kernel compilation for embedded devices.
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?