On 11/28/15, Yeongjin Jang yeongjinjanggrad@gmail.com wrote:
Hi,
I am Yeongjin Jang, a Ph.D. Student at Georgia Tech.
In our lab (SSLab, https://sslab.gtisc.gatech.edu/), we are working on a project called B2BWiki, which enables users to share the contents of Wikipedia through WebRTC (peer-to-peer sharing).
Website is at here: http://b2bwiki.cc.gatech.edu/
The project aims to help Wikipedia by donating computing resources from the community; users can donate their traffic (by P2P communication) and storage (indexedDB) to reduce the load of Wikipedia servers. For larger organizations, e.g. schools or companies that have many local users, they can donate a mirror server similar to GNU FTP servers, which can bootstrap peer sharing.
Potential benefits that we think of are following.
- Users can easily donate their resources to the community.
Just visit the website.
- Users can get performance benefit if a page is loaded from
multiple local peers / local mirror (page load time got faster!).
Wikipedia can reduce its server workload, network traffic, etc.
Local network operators can reduce network traffic transit
(e.g. cost that is caused by delivering the traffic to the outside).
While we are working on enhancing the implementation, we would like to ask the opinions from actual developers of Wikipedia. For example, we want to know whether our direction is correct or not (will it actually reduce the load?), or if there are some other concerns that we missed, that can potentially prevent this system from working as intended. We really want to do somewhat meaningful work that actually helps run Wikipedia!
Please feel free to give as any suggestions, comments, etc. If you want to express your opinion privately, please contact sslab@cc.gatech.edu.
Thanks,
--- Appendix ---
I added some detailed information about B2BWiki in the following.
# Accessing data When accessing a page on B2BWiki, the browser will query peers first.
- If there exist peers that hold the contents, peer to peer download
happens. 2) otherwise, if there is no peer, client will download the content from the mirror server. 3) If mirror server does not have the content, it downloads from Wikipedia server (1 access per first download, and update).
# Peer lookup To enable content lookup for peers, we manage a lookup server that holds a page_name-to-peer map. A client (a user's browser) can query the list of peers that currently hold the content, and select the peer by its freshness (has hash/timestamp of the content, has top 2 octet of IP address (figuring out whether it is local peer or not), etc.
# Update, and integrity check Mirror server updates its content per each day (can be configured to update per each hour, etc). Update check is done by using If-Modified-Since header from Wikipedia server. On retrieving the content from Wikipedia, the mirror server stamps a timestamp and sha1 checksum, to ensure the freshness of data and its integrity. When clients lookup and download the content from the peers, client will compare the sha1 checksum of data with the checksum from lookup server.
In this settings, users can get older data (they can configure how to tolerate the freshness of data, e.g. 1day older, 3day, 1 week older, etc.), and the integrity is guaranteed by mirror/lookup server.
More detailed information can be obtained from the following website.
http://goo.gl/pSNrjR (URL redirects to SSLab@gatech website)
Please feel free to give as any suggestions, comments, etc.
Thanks,
Yeongjin Jang
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Hi,
This is some interesting stuff, and I think research along these lines (That is, leveraging webrtc to deliver content in a P2P manner over web browsers) will really change the face of the internet in the years to come.
As for Wikipedia specifically (This is all just my personal opinion. Others may disagree with me):
*Wikipedia is a a fairly stable/mature site. I think we're past the point where its a good idea to experiment with experimental technologies (Although mirrors of Wikipedia are a good place to do that). We need stability and proven technology.
*Bandwidth makes up a very small portion of WMF's expenses (I'm not sure how small. Someone once told me that donation processing costs takes up more money then raw bandwidth costs. Don't know if that's true, but bandwidth is certainly not the biggest expense).
Your scheme primarily serves to offload bandwidth of cached content to other people. But serving cached content (by which I mean, anonymous users getting results from varnish) is probably the cheapest (in terms of computational resources) part of our setup. The hard part is things like parsing wikitext->html, and otherwise generating pages.
*24 hours to page update is generally considered much too slow (Tolerance for anons is probably a bit higher than logged in users, but still). People expect their changes to appear for everyone, immediately. We want the delay to be in seconds, not days. I think its unlikely that any sort of expire scheme would be acceptable. We need active cache invalidation upon edit.
*Lack of analysis of scalability (I just briefly skimmed the google cache version of the page you linked [your webserver had the connection keep being reset], so its possible I missed this). I didn't see any analysis of how your system scales with load. Perhaps that's because you're still in the development stage, and the design isn't finalized(?) Anyways, scalability analysis is important when we're talking about wikipedia. Does this design still work if you have 100,000 (or even more) peers?
*Privacy concerns - Would a malicious person be able to force themselves to be someone's preferred peer, and spy on everything they read, etc.
*DOS concerns - Would a malicious peer or peers be able to prevent an honest user from connecting to the website? (I didn't look in detail at how you select peers and handle peer failure, so I'm not sure if this applies)
--
Anyways, I think this sort of think is interesting, but I think your system would be more suited to people running a small static website, that want to scale to very high numbers, rather than Wikipedia's use case.
-- -bawolff