Web-Overlay is an experimental toolkit for constructing Web-based overlay networks, where each node (peer) is either a Web browser or a Node.js. WebRTC and WebSocket (actually Socket.io) connections are used as an interconnect between nodes.
Web-Overlay includes implementation of Connection Manager and a structured overlay network, Kirin. It also includes:
- a very simple, CUI-based unstructured overlay network, and
- a demo program that runs on a Web browsers and Node.js.
Web-Overlay is developed by Abe Lab at Osaka City University, Japan [Link].
GNU General Public License 3.0.
You need a Node.js installed on your computer. (We are using Node.js v12.16.xx for now.)
Get the source code from GitHub (as this software is not yet published as an npm package).
% git clone https://github.com/abelab/web-overlay.git
Install lerna locally.
% cd web-overlay % npm install
% npx lerna bootstrap
Transpile from TypeScript
% npx lerna run build
Detailed documentations are not available for now. Please refer the source code of sample programs below.
Simple CUI-based unstructured overlay network
packages/unstructured directory contains an implementation of a very
simple unstructured overlay network. Please visit this
page for further information.
Web-based demo program
packages/demo directory contains a Web-based demo program, powered
Start an initial node
The initial node (the first node of the overlay network) must be a Node.js node.
% cd packages/demo % env DEPLOYMENT=localhost8080-initial npm run portal
This command starts the initial node based on the configuration file ./config/deployment/localhost8080-initial.json.
Your initial node will start listening on http://localhost:8080.
Run as the initial portal node - NETWORK_ID: NET-b4bbd842 - LOG_SERVER_URL: http://localhost:8801 - OVERLAY: kirin - MY_URL: http://localhost:8080 - DEBUG: DEBUG:* - HTTP ROOT: ..../packages/demo/dist starting portal node... initInitialNode succeeded started: NodeId=cc348211, URL=http://localhost:8080 Command list: status, leave, quit, enable, disable Prompt>
Join your Web browser
Access to http://localhost:8080 with your Web browser.
Enter some key (string) and push Join button. If everything goes well, your browser will join the overlay network. You can join multiple browsers (or multiple windows/tabs) to the network.
Note: here we assume that you run your browser on the same computer that runs the initial node. If you want to allow browsers on a different computer to join, you have to configure your initial node to have a proper URL. Make a copy of
localhost8080-initial.jsonin the same directory and edit MY_URL in the JSON file, then run the initial node with the new configuration file. E.g.,
env DEPLOYMENT=myhost8080-initial npm run portal.
There are several links on the cyan stripe.
Web-Overlay includes an implementation of Kirin structured overlay network.
Kirin is a key-order preserving structured overlay network (KOPSON). In Kirin, each node has a unique key. You can send a message to a node by specifying a key (unicast) and also to a set of nodes by specifying a key range (multicast or range query).
Kirin uses a modified version of DDLL algorithm for managing distributed doubly-linked ring structure. DDLL supports node insertion, deletion, and failure recovery. This DDLL implementation is also included in Web-Overlay.
- Kota Abe and Yuuichi Teranishi: "Suzaku: A Churn Resilient and Lookup-Efficient Key-Order Preserving Structured Overlay Network", IEICE Transactions on Communications, Vol. E102–B, No. 9, pp. 1885-1894, 2019. [Link1] [Link2]
- Thorsten Schütt, Florian Schintke and Alexander Reinefeld: "Range queries on structured overlay networks", Computer Communications, Vol. 31, No. 2, pp.358-374, 2008. [Link]
- Kota Abe and Mikio Yoshida: "Constructing Distributed Doubly Linked Lists without Distributed Locking", In Proceeding of the IEEE International Conference on Peer-to-Peer Computing 2015 (P2P 2015), 2015. [Link1] [Link2]
This work was supported by JSPS KAKENHI Grant Number 16K00135.