Eyal Blum Alex Honda
FaReCast Fast Reliable Application Layer Multicast for Flash Dissemination Application Layer Flash Dissemination Authors Kyungbaek Kim Sharad Mehrotra Nalini Venkatasubramanian
FaReCast Motvation Emergency dissemination of information Assumes high node and link failure rates Emergencies are infrequent Earthquake Tsunami Forrest Fires Tornados Require reliable and fast transmission
FaReCast Structure Multitree structure Single reliable “root” Multiple parents for each client node Local topology maintained by each client nodes Global topology maintained by configuration manager
Configuration Manager (CM) Maintains network topology Join – client is assigned parents and children Update – client is informed of its current neighbors Leave – client gracefully exits the group Timeout – client fails Not used in dissemination Single point of failure Performance bottleneck
Distributing the CM Use FreePastry to Evenly distribute the load Handle reliable group communication Each CM maintains a subset of the client data More efficient – for updates No redundancy – assume CMs are reliable Ensure that the number of nodes in the system is globally consistent Central Coordinator Algorithm
Distributed CM Join Assign a client parents and children, based on level in tree Requires consistent number of nodes in the system Choose arbitrary centralized authority Pass a token from and back to centralized authority A join process can only start once its CM hold the token Join Process Maintain parent set uniqueness – No two clients can have the same parent set Select a parent set at random If PSU is violated, throw out the candidate parent with the most children (heuristic) Keep requesting parents until we have fan-in many, and PSU is satisfied
Issues Minimizing intra-server messages Minimizing response time for update requests Ensuring global consistency for critical variables Preventing race conditions for threaded processes Emulating multiple clients for testing the CM
Results Currently in progress Consistency issues Heissenbugs Fun Fact: Favorite (and most used) command: “killall java”