Ever clicked on a 'hot-link' in Slashdot or Digg and received a "webserver too busy" or "this webpage has exceeded its bandwidth quota" message?? Then you are all too familiar with the Slashdot or Digg effect. Flashback is our experimental web-server that is meant to address this problem using a unique approach. In Flashback, the browsers visiting the overloaded site are dynamically recruited into a P2P system to help share the load.
Sure! To see Flashback in action, click here . You will be asked to click on a logo. Once you click on it, a Java applet will load and ask for your permission to run. If you accept the applet, you will flashback in action.The Java applet in your browser downloads the web-page from other peers (browsers).
Flashback is a work in progress. We have tested it with IE-7, Firefox and Safari on Win-XP and OS-X. There are some known issues with Opera but for the most part, it should work just fine. You will need Java Plugin version that is 1.4 or greater. You might also need a lit bit of patience initially since the applet takes a while (5-20 seconds) to initialize. The applet itself is pretty small (60KB or 160KB depending upon your Java plugin) and downloads fast. If the web-page doesn;t display correctly, try reloading the page :-) This is still a work in progress and we are working to iron out the bugs.
When you accept the java applet (around 80K of code) you run a small web-server and a Flashback-Node. The FB-(flashback for short)Node becomes part of a dynamic P2P network where everyone is receiving and sending chunks or parts of the web-page to each other. Have no worry! You will only send out as much data as you receive. Further, the FB-Node shuts down automatically and also removes itself from the P2P network almost immediately after fully downloading the web-page. If you are curious about what the Flashback applet is doing, you can open up the Java console from your browser and look at the information it is printing.
The answer is Yes and No. You could theoretically use Bittorrent to achieve the same effect but, let us allow Bram Cohen himself to explain the 'No' part of the answer (Slashdot Interview June-2 2003):
Interviewer: Has any effort/thought been put towards bit torrent page distribution? Specifically, a way that one can use BT to mirror webpages. A way to get around the /. effect, and as well would work wonders the next emergency that comes out (see 9/11).
Bram Cohen: Images in web pages are very small and require very low latency. BitTorrent is designed for much larger files, which download on the order of minutes or hours rather than seconds. BitTorrent uses the significant amount of time those downloads take to try out and compare different connections. This process has inherent latencies which make it unsuitable for images on web pages. Certainly it would be possible on paper to dramatically reduce the cost of hosting an ordinary web site using peer transfers, but the logistical problems of handling many small files at low latency have yet to be solved, and will probably require a protocol which looks significantly different from BitTorrent.
Not to brag, but we believe Roulette (The data exchange protocol that is at the heart of Flashback) is this significantly different protocol. Of course, small content is only part of the problem. The other part is the highly dynamic P2P network that one gets when disseminating small content. You could get as many as 10,000 peers entering and leaving the system under a minute for large flash crowds.
Glad you asked :) We have packaged a whole set of goodies in Flashback. It does automatic NAT traversal without any user configuration (using a fully decentralized hole-punching protocol), and except for the initial accept of the applet by the user, does not require any more interction from the user.
Well, loading the initial web-page is slow because your browser has to download, possibly unpack (if using java version 1.5) and verify the jar file. This takes some time. Second, we have deliberately set the bandwidth of the 'central' peer to be low so as to emulate a DSL connection; this makes loading the web-pages slow.
Well, a reason for this deployment is to collect limited statistics from peers to improve the system. The information we collect is the IP address of your machine, how long it took to download the web-page and which other peers you linked to to download the web-page. These are the only pieces of information we collect. Your soul is safe with you. Peace.