Genet: A Quickly Scalable Fat-Tree Overlay for Personal Volunteer Computing using WebRTC

WebRTC enables browsers to exchange data directly but the number of possible concurrent connections to a single source is limited. We overcome the limitation by organizing participants in a fat-tree overlay: when the maximum number of connections of a tree node is reached, the new participants connect to the node's children. Our design quickly scales when a large number of participants join in a short amount of time, by relying on a novel scheme that only requires local information to route connection messages: the destination is derived from the hash value of the combined identifiers of the message's source and of the node that is holding the message. The scheme provides deterministic routing of a sequence of connection messages from a single source and probabilistic balancing of newer connections among the leaves. We show that this design puts at least 83% of nodes at the same depth as a deterministic algorithm, can connect a thousand browser windows in 21-55 seconds in a local network, and can be deployed for volunteer computing to tap into 320 cores in less than 30 seconds on a local network to increase the total throughput on the Collatz application by two orders of magnitude compared to a single core.

[1]  José Duato,et al.  RUFT: Simplifying the Fat-Tree Topology , 2008, 2008 14th IEEE International Conference on Parallel and Distributed Systems.

[2]  Juan Julián Merelo Guervós,et al.  Asynchronous distributed genetic algorithms with Javascript and JSON , 2008, 2008 IEEE Congress on Evolutionary Computation (IEEE World Congress on Computational Intelligence).

[3]  Chris J. Scheiman,et al.  SuperWeb: towards a global Web-based parallel computing infrastructure , 1997, Proceedings 11th International Parallel Processing Symposium.

[4]  Dario Floreano,et al.  The Seamless Peer and Cloud Evolution Framework , 2016, GECCO.

[5]  Peter R. Cappello,et al.  Javelin++: scalability issues in global computing , 1999, JAVA '99.

[6]  Jerzy Duda,et al.  Distributed Evolutionary Computing System Based on Web Browsers with JavaScript , 2012, PARA.

[7]  Eric A. Brewer,et al.  ATLAS: an infrastructure for global computing , 1996, EW 7.

[8]  Antoine Mhanna The Collatz Conjecture , 2014 .

[9]  Mikael Högqvist,et al.  Hive.js: Browser-Based Distributed Caching for Adaptive Video Streaming , 2014, 2014 IEEE International Symposium on Multimedia.

[10]  David Dias,et al.  browserCloud.js A federated community cloud served by a P2P overlay network on top of the web platform , 2014 .

[11]  Achour Mostéfaoui,et al.  An adaptive peer-sampling protocol for building networks of browsers , 2017, World Wide Web.

[12]  David Herrera,et al.  Numerical computing on the web: benchmarking for the future , 2018, DLS.

[13]  Hossam S. Hassanein,et al.  A survey of peer-to-peer live video streaming schemes - An algorithmic perspective , 2012, Comput. Networks.

[14]  David P. Anderson,et al.  BOINC: a system for public-resource computing and storage , 2004, Fifth IEEE/ACM International Workshop on Grid Computing.

[15]  Roman Debski,et al.  ComcuteJS: A Web Browser Based Platform for Large-scale Computations , 2013, Comput. Sci..

[16]  Peter R. Cappello,et al.  Javelin: Internet-based Parallel Computing using Java , 1997, Concurr. Pract. Exp..

[17]  Albert van der Linde,et al.  Legion: Enriching Internet Services with Peer-to-Peer Interactions , 2017, WWW.

[18]  Gonzalo J. Martínez,et al.  Capataz: a framework for distributing algorithms via the World Wide Web , 2015, CLEI Electron. J..

[19]  Peter A. Dinda,et al.  FatNemo: Building a Resilient Multi-source Multicast Fat-Tree , 2004, WCW.

[20]  Zvi M. Kedem,et al.  Charlotte: Metacomputing on the Web , 1999, Future Gener. Comput. Syst..

[21]  Laurie Hendren,et al.  Using JavaScript and WebCL for numerical computations: a comparative study of native and web technologies , 2015 .

[22]  Miguel Correia,et al.  Pando: Personal Volunteer Computing in Browsers , 2018, Middleware.

[23]  Laurie J. Hendren,et al.  Personal volunteer computing , 2018, CF.

[24]  Masaru Fukushi,et al.  A peer-to-peer communication function among Web browsers for Web-based Volunteer Computing , 2014, 2014 14th International Symposium on Communications and Information Technologies (ISCIT).

[25]  Satoshi Hirano,et al.  Bayanihan: building and studying web-based volunteer computing systems using Java , 1999, Future Gener. Comput. Syst..

[26]  François Bry,et al.  Crowdsourcing MapReduce: JSMapReduce , 2013, WWW '13 Companion.

[27]  David P. Anderson,et al.  Homogeneous redundancy: a technique to ensure integrity of molecular simulation results using public computing , 2005, 19th IEEE International Parallel and Distributed Processing Symposium.

[28]  Emmanuel Jeannot,et al.  Adding Virtualization Capabilities to the Grid'5000 Testbed , 2012, CLOSER.

[29]  Pedro López,et al.  Deterministic versus Adaptive Routing in Fat-Trees , 2007, 2007 IEEE International Parallel and Distributed Processing Symposium.

[30]  Magiel Bruntink,et al.  MLitB: machine learning in the browser , 2015 .

[31]  Jinyuan Jia,et al.  WebTorrent based fine-grained P2P transmission of large-scale WebVR indoor scenes , 2017, Web3D.

[32]  Marian Bubak,et al.  Distributed Computing on an Ensemble of Browsers , 2013, IEEE Internet Computing.

[33]  Laurie Hendren,et al.  Pando: A Volunteer Computing Platform for the Web , 2017, 2017 IEEE 2nd International Workshops on Foundations and Applications of Self* Systems (FAS*W).

[34]  Charles E. Leiserson,et al.  Fat-trees: Universal networks for hardware-efficient supercomputing , 1985, IEEE Transactions on Computers.