<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Princeton S* Network Systems</title>
	
	<link>http://sns.cs.princeton.edu</link>
	<description>Secure, Scalable, Self-Organizing, Storage, Self-Managing, ...</description>
	<lastBuildDate>Sun, 22 Nov 2009 04:31:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/PrincetonSNS" type="application/rss+xml" /><feedburner:emailServiceId>PrincetonSNS</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Computing for Global Development</title>
		<link>http://feedproxy.google.com/~r/PrincetonSNS/~3/12l_leDSG0k/</link>
		<comments>http://sns.cs.princeton.edu/2009/11/computing-for-global-development/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 06:02:36 +0000</pubDate>
		<dc:creator>Muneeb Ali</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Technology for Developing Regions]]></category>

		<guid isPermaLink="false">http://sns.cs.princeton.edu/?p=510</guid>
		<description><![CDATA[Oct 2009 issue of the SIGCOMM CCR has an editorial by Kentaro Toyama and me where we ask the question if technologies for developing regions be considered a core area of computer science research? It is relatively easy to argue that technology can help improve the lives of the poorest billion people on the planet. [...]]]></description>
			<content:encoded><![CDATA[<p>Oct 2009 issue of the SIGCOMM CCR has an editorial by <a href="http://research.microsoft.com/en-us/um/people/toyama/">Kentaro Toyama</a> and me where we ask the question if technologies for developing regions be considered a core area of computer science research? It is relatively easy to argue that technology can help improve the lives of the poorest billion people on the planet. But, is it research? More specifically, is it computer science research? This editorial stems out of our discussions at the CCC Workshop on Global Development. <a href="http://blizzard.cs.uwaterloo.ca/keshav/wiki/index.php/Main_Page">Keshav</a> asked us to merge our, somewhat opposing, views into an editorial. You can read it <a href="http://ccr.sigcomm.org/online/?q=node/539">here</a>. In this post, I will give a summary of the Workshop on Global Development:</p>
<p><strong>CCC Workshop on Global Development:</strong></p>
<table border="0">
<tbody>
<tr>
<td><img class="alignnone size-full wp-image-679" title="IMG_0147" src="http://sns.cs.princeton.edu/wp-content/uploads/2009/11/IMG_0147.JPG" alt="IMG_0147" width="400" height="300" /></td>
<td>The <a href="http://www.cra.org/ccc/globaldev.php">Workshop on Global Development</a> was held at the Claremont, Berkeley. Thanks to the CCC funding, we were able to fly 40+ participants and cover all their expenses. Although I was one of the organizers,  the views presented here are mine and not of the participants or sponsors.</td>
</tr>
</tbody>
</table>
<p><strong>Background:</strong><br />
Digital technologies have done wonders for mankind. However, benefits of digital technologies (e.g., the Internet) are often limited to the &#8220;first world&#8221;, leading to the so-called &#8220;digital divide&#8221;. People in developing regions get access to a decreasing share of digital resources, which are critical for socio-economic development in the 21st century.</p>
<p>The last decade has seen a resurgence of interest in the application of digital technologies to address problems in global development. Eric Brewer&#8217;s <a href="http://tier.cs.berkeley.edu/wiki/Home">TIER group</a> at Berkeley is one example. However, this area has not (yet) gained acceptance as core computer science research. There are many reasons for this and the <a href="http://ccr.sigcomm.org/online/?q=node/539">CCR editorial</a> talks about them in detail.</p>
<p>The purpose of the CCC workshop was to bring together lead researchers in the area, along with experts in more established areas, and have a frank discussion about the future of developing regions research. This was a true workshop in the sense that unlike a &#8220;mini-conference&#8221; there were no PowerPoint presentations. The participants came with a vague idea of what their thoughts were and, after some intense discussion, left with a deeper understanding of the problem and possible solutions. We had to feel the pulse of the audience and adapt the workshop agenda on-the-fly. This was truly exciting.</p>
<p><strong> Highlights of Day 1:</strong><br />
<img class="alignnone size-full wp-image-686" title="IMG_0139" src="http://sns.cs.princeton.edu/wp-content/uploads/2009/11/IMG_0139.JPG" alt="IMG_0139" width="400" height="300" /><br />
<strong>Panel on Technical vs. Non-Technical:</strong> <a href="http://www.cs.berkeley.edu/~brewer/">Eric Brewer</a> (Berkeley), <a href="http://research.microsoft.com/en-us/um/people/toyama/">Kentaro Toyama</a> (Microsoft Research), <a href="http://people.ischool.berkeley.edu/~parikh/">Tapan Parikh</a> (Berkeley), <a href="http://www.cse.iitb.ac.in/silmaril/br/doku.php">Bhaskar Raman</a> (ITT-Bombay) went over the &#8220;Is ICTD a technical or a non-technical field&#8221;. There is a combination of some hard technical problems and some application of existing technologies in new ways. Computer scientists won&#8217;t get interested unless the problems are technically hard. The challenge is to either find problems that are both technically hard and can have a real impact or find innovative use of existing technologies that solves problems at large scale i.e., for millions of poor people.</p>
<p><strong>Panel on Starting New Research Areas:</strong><br />
Before more researchers get interested in the area and a plethora of research material is published, we need to step back and learn from history. <a href="http://en.wikipedia.org/wiki/Deborah_Estrin">Deborah Estrin</a> (UCLA), <a href="http://bnrg.eecs.berkeley.edu/~randy/">Randy Katz</a> (Berkeley), <a href="http://www.cs.washington.edu/homes/gaetano/">Gaetano Borriello</a> (Univ. of Washington), and <a href="http://rakesh.agrawal-family.com/">Rakesh Agrawal</a> (Microsoft Research) gave their insights on starting a new field. Deborah talked about her early experiences with sensor networks, Gaetano&#8217;s commented on the early days of pervasive computing, Rakesh on data mining and Randy talked about the opportunities and problems facing new fields in general. Food for thought: what is the use of X amount of papers published that all solve a problem Y, which will never actually occur in real life? Ever. I have purposely left out specific views of the panelists from this post. Some information is available from the <a href="http://www.cra.org/ccc/globaldev.php">workshop summary and proceedings</a>, but we decided not to make the workshop minutes public. Feel free to contact me in private, if you want more information.</p>
<p><strong>Keynote &#8211; Anil Gupta (Honey Bee Network):</strong><br />
Most of the afternoon was spent on discussing issues like branding, publication venues, funding, and education. And then <a href="http://www.iimahd.ernet.in/~anilg/">Anil Gupta</a> gave a very interesting keynote. He showed specific examples of innovation in developing regions, where poor people have engineered technology in various ways to solve their everyday problems. This shows that a) technology, specifically designed for their needs, can help their daily lives and b) people in the developing regions should not only be consumers of such research/products, but can actively participate as innovators themselves. Watch this Discovery Channel video about Honey Bee Network to get an idea of what Anil was talking about:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/m_ho7xhgWV8&amp;hl=en_US&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/m_ho7xhgWV8&amp;hl=en_US&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>I must admit that at the end of the first day, everything was unclear. We raised more questions than answers and it was not clear what direction this research community will take. Or if this research community even exists in the first place.</p>
<p><strong>Highlights of Day 2:</strong><br />
We started the day with presenting specific problems in networks/systems, HCI, AI, applications, and software engineering that the participants thought were important problems in the area. This helped to set some &#8220;grand challenges&#8221; for each sub-area. Frankly, I think most of them were examples of good individual projects instead of &#8220;grand challenges&#8221;. Nevertheless it helped the participants to get a feel of what research direction each sub-area may take.</p>
<p><img class="alignnone size-full wp-image-693" title="IMG_0140" src="http://sns.cs.princeton.edu/wp-content/uploads/2009/11/IMG_0140.JPG" alt="IMG_0140" width="250" height="333" /></p>
<p><strong>Panel on Technology Transfer:</strong><br />
We had a panel on technology transfer with <a href="http://web.media.mit.edu/~nathan/">Nathan Eagle</a> (MIT), <a href="http://people.csail.mit.edu/umar/">Umar Saif</a> (LUMS), <a href="http://www.dimagi.com/content/team.html">Jonathan Jackson</a> (Dimagi), and Vijay Chandru (Strandls). Vijay was behind the famous <a href="http://en.wikipedia.org/wiki/Simputer">Indian Simputer project</a> and talked about how they went about commercializing the Simputer and what lessons they learned (the image of the left is Vijay holding a Simputer). Umar talked about a startup that provides <a href="http://www.seenreport.com/">citizen journalism</a> and another one that is like a <a href="http://www.chopaal.pk/">SMS-Twitter</a> for Pakistan. He described how these services have helped in disaster situations or how they are providing means for disseminating information in a place where there are often restrictions on the freedom of media. Jonathan talked about the ups and downs of providing healthcare technology solutions in Africa.</p>
<p><strong>New SIG/Conference:</strong><br />
A turning point in the workshop was when <a href="http://research.microsoft.com/en-us/um/people/thies/">Bill Thies</a> presented a proposal for a new ACM SIG. There was unanimous support for forming such a SIG and everyone agreed with the goals and purpose of the SIG. Suddenly, there was a sense of community building. The area now had a name (sort-of) and a SIG to associate with. If developing regions research becomes part of main stream computer science in the coming decades, this exact moment was it&#8217;s birth in a way. We went on to discuss the specifics of publication venues (conferences and journals). I don&#8217;t want to disclose information about what exactly is happening, but it will be public soon.</p>
<p><strong> Closing &amp; Acknowledgments:</strong><br />
In the closing comments someone emphasized that &#8220;let&#8217;s not forget that we are all here because we want to touch human lives in someway. What we are doing in the end boils down to the direct impact on the underprivileged. This is the single most important and unique aspect of this area of research.&#8221; This thought stuck with me after the event.</p>
<p>I&#8217;d like to thank <a href="http://people.ischool.berkeley.edu/~parikh/">Tapan Parikh</a> (Berkeley), <a href="http://cs.nyu.edu/~lakshmi/">Lakshmi Subramanian</a> (NYU), and <a href="http://research.microsoft.com/en-us/um/people/thies/">Bill Thies</a> (Microsoft Research) for doing all the work. I merely helped in a few tasks here and there.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=12l_leDSG0k:dK-rSefViZs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=12l_leDSG0k:dK-rSefViZs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?i=12l_leDSG0k:dK-rSefViZs:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=12l_leDSG0k:dK-rSefViZs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=12l_leDSG0k:dK-rSefViZs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?i=12l_leDSG0k:dK-rSefViZs:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PrincetonSNS/~4/12l_leDSG0k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sns.cs.princeton.edu/2009/11/computing-for-global-development/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://sns.cs.princeton.edu/2009/11/computing-for-global-development/</feedburner:origLink></item>
		<item>
		<title>IPTPS ‘10 call for papers</title>
		<link>http://feedproxy.google.com/~r/PrincetonSNS/~3/okPVVdG0bug/</link>
		<comments>http://sns.cs.princeton.edu/2009/11/iptps-10-call-for-papers/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 05:50:37 +0000</pubDate>
		<dc:creator>Mike Freedman</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Peer-to-peer]]></category>

		<guid isPermaLink="false">http://sns.cs.princeton.edu/?p=606</guid>
		<description><![CDATA[Together with Arvind Krishnamurthy, I&#8217;ll be chairing this year&#8217;s International Workshop on Peer-to-Peer Systems (IPTPS).  The workshop was started in 2002, which coincided both with the popularization of P2P file sharing (Napster, KaZaA) and the introduction of distributed hash tables (DHTs) from several different research groups.
Eight years later, P2P file sharing is still going strong [...]]]></description>
			<content:encoded><![CDATA[<p>Together with<a href="http://www.cs.washington.edu/homes/arvind/"> Arvind Krishnamurthy</a>, I&#8217;ll be chairing this year&#8217;s International Workshop on Peer-to-Peer Systems (IPTPS).  The workshop was started in 2002, which coincided both with the popularization of P2P file sharing (Napster, KaZaA) and the introduction of distributed hash tables (DHTs) from several different research groups.</p>
<p>Eight years later, P2P file sharing is still going strong (now through BitTorrent), while the previously-academic <a href="http://en.wikipedia.org/wiki/Distributed_hash_table">DHTs</a> have found their way into real use.  DHTs now form the decentralized lookup structures for file sharing services&#8212;in the form of so-called &#8220;trackerless&#8221; BitTorrent&#8212;with the DHT in the Vuze service comprising more than a million concurrent users.  (As an aside, I&#8217;m proud to note that Vuze&#8217;s DHT is based on <a href="http://en.wikipedia.org/wiki/Kademlia">Kademlia</a>, which was proposed by one of my officemates in grad school, <a href="http://pdos.csail.mit.edu/~petar/">Petar Maymounkov</a>.)</p>
<p>These self-organizing systems have also found their way into the datacenter.  One notable example is the storage system, <a href="http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html">Dynamo</a>, that forms the basis for Amazon&#8217;s shopping cart and other back-end  applications.  Or Facebook&#8217;s <a href="http://www.facebook.com/note.php?note_id=24413138919">Cassandra</a>, used for its Inbox search.  Or the rest of the <a href="http://en.wikipedia.org/wiki/NoSQL">key-value stores</a> that do automated partitioning.  And we are starting to see these techniques being <a href="http://portal.acm.org/citation.cfm?id=1402961">proposed</a> for scaling enterprise networks as well.  With that in mind, we wanted to broaden the scope of this year&#8217;s IPTPS to include topics relating to self-organizing and self-managing distributed systems, even those running in single administrative domains.</p>
<p>We also plan to have a <strong>demo session</strong> at this year&#8217;s IPTPS to highlight developed and deployed systems.  The workshop will be collocated with NSDI in San Jose, so will be especially convenient for those in the Bay Area.  We welcome submissions (both paper and demos) from researchers, developers, and hackers.  If you don&#8217;t want to write a paper, come show off your running P2P system.</p>
<p>Paper submissions are due<strong> </strong><strong><strong>Friday, December 18, 2009</strong></strong>.  More information can be found at <a href="  http://www.usenix.org/event/iptps10/cfp/">http://www.usenix.org/event/iptps10/cfp/</a>.</p>
<p><span id="more-606"></span></p>
<blockquote><p><span style="text-decoration: underline;"><strong><span style="color: #000080;">Call for Papers</span></strong></span></p>
<p>The 9th International Workshop on Peer-to-Peer Systems (IPTPS &#8216;10) provides a forum for researchers to engage in a lively discussion of current and future trends in peer-to-peer systems. Co-located with NSDI &#8216;10 in San Jose, CA, this one-day workshop provides a venue in which to present and discuss peer-to-peer technologies, applications, and systems and to identify key research issues and challenges that lie ahead.</p>
<p>This year, the workshop&#8217;s charter will be expanded to include topics relating to self-organizing and self-managing distributed systems. This is in response to recent trends where self-organizing techniques proposed in early peer-to-peer systems have found their way into more managed settings such as datacenters, enterprises, and ISPs to help deal with growing scale, complexity, and heterogeneity. In the context of this year&#8217;s workshop, peer-to-peer systems are defined to be large-scale distributed systems that are mostly decentralized, are self-organizing, and might or might not include resources from multiple administrative domains.</p>
<p>Topics of interest include but are not limited to:</p>
<ul>
<li>Network and system support for peer-to-peer systems</li>
<li>Self-organizing and self-managing distributed systems</li>
<li>Adaptive algorithms and architectures for large-scale distributed systems</li>
<li>New applications and protocols for peer-to-peer systems</li>
<li>Availability, robustness, performance, and scaling</li>
<li>Security, privacy, anonymity, anti-censorship, and incentives</li>
<li>Lessons drawn from experience with deployed peer-to-peer systems</li>
<li>Measurement, modeling, and workload characterization</li>
</ul>
<p>Papers will be selected based on originality, likelihood of spawning insightful discussion, and technical merit. The program will include presentations of position papers along with plenty of time for lively discussion among the participants, as well as a demo session for working systems.</p>
<p><span style="color: #000080;"><strong>Important Dates</strong></span></p>
<ul>
<li>Submissions due: <strong>Friday, December 18, 2009, 11:59 p.m. EST</strong></li>
<li>Notification of acceptance: <strong>Sunday, February 28, 2010</strong></li>
<li>Demo proposals due: <strong>Monday, March 15, 2010</strong></li>
<li>Electronic files due: <strong>Monday, March 29, 2010</strong></li>
</ul>
</blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=okPVVdG0bug:Wdfh5ynFAg8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=okPVVdG0bug:Wdfh5ynFAg8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?i=okPVVdG0bug:Wdfh5ynFAg8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=okPVVdG0bug:Wdfh5ynFAg8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=okPVVdG0bug:Wdfh5ynFAg8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?i=okPVVdG0bug:Wdfh5ynFAg8:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PrincetonSNS/~4/okPVVdG0bug" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sns.cs.princeton.edu/2009/11/iptps-10-call-for-papers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://sns.cs.princeton.edu/2009/11/iptps-10-call-for-papers/</feedburner:origLink></item>
		<item>
		<title>Post-doc opportunity</title>
		<link>http://feedproxy.google.com/~r/PrincetonSNS/~3/Xlapsh4Si3M/</link>
		<comments>http://sns.cs.princeton.edu/2009/10/post-doc-opportunity/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 12:30:43 +0000</pubDate>
		<dc:creator>Mike Freedman</dc:creator>
				<category><![CDATA[Network Architectures]]></category>
		<category><![CDATA[Research Opportunities]]></category>
		<category><![CDATA[postdocs]]></category>
		<category><![CDATA[SCAFFOLD]]></category>

		<guid isPermaLink="false">http://sns.cs.princeton.edu/?p=610</guid>
		<description><![CDATA[Jen Rexford and I are jointly seeking to hire a post-doc to join us at Princeton.   We are looking for somebody to start sometime between February and June 2010 (ideally, as soon as possible) and stay for a duration of 18-24 months.
This research opportunity is part of the SCAFFOLD project.  SCAFFOLD is a new network [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cs.princeton.edu/~jrex/">Jen Rexford</a> and I are jointly seeking to hire a post-doc to join us at Princeton.   We are looking for somebody to start sometime between February and June 2010 (ideally, as soon as possible) and stay for a duration of 18-24 months.</p>
<p>This research opportunity is part of the SCAFFOLD project.  SCAFFOLD is a new network architecture that focuses on better supporting distributed and wide-area services.  These services, run over multiple hosts distributed across many locations, need to respond quickly to server and network churn: both unexpected changes (due to equipment failures and physical mobility) and intentional changes (during planned maintenance, load balancing, and workload migration). SCAFFOLD is exploring network support for treating service-level objects (rather than hosts) as first-class citizens and for providing a tighter coupling between object-based naming and routing.  While the design can support a clean-slate Internet architecture, we are immediately focusing on incremental deployment within a single datacenter or enterprise, as well as across multiple, geo-diverse datacenters.</p>
<p>The postdoctoral associate will provide a leadership role in designing, prototyping, and deploying a SCAFFOLD network.  System components include network-layer devices (<a href="http://www.openflowswitch.org/">OpenFlow</a>-based routers/switches, proxies for backwards compatibility, and <a href="http://www.noxrepo.org/">NOX</a>-based network controllers), integrated end-hosts, and application-level services to be deployed on top of SCAFFOLD.</p>
<p>Applicants should have a Ph.D. in computer science or a related field at the time of starting the position. They should have a strong research record, as well as first-hand experience <em>building</em> complex networked systems.  Applicants are requested to apply via email (to Jen and myself) with a curriculum vitae and a description of their background and interests. The position will provide a competitive salary and support for further professional development.  Non-U.S. citizens or residents are welcome to apply.  The project is funded through the National Science Foundation, the GENI Project Office, the Office of Naval Research, and Cisco Systems.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=Xlapsh4Si3M:tuYNGtPS9pk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=Xlapsh4Si3M:tuYNGtPS9pk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?i=Xlapsh4Si3M:tuYNGtPS9pk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=Xlapsh4Si3M:tuYNGtPS9pk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=Xlapsh4Si3M:tuYNGtPS9pk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?i=Xlapsh4Si3M:tuYNGtPS9pk:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PrincetonSNS/~4/Xlapsh4Si3M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sns.cs.princeton.edu/2009/10/post-doc-opportunity/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://sns.cs.princeton.edu/2009/10/post-doc-opportunity/</feedburner:origLink></item>
		<item>
		<title>New datacenter network architectures</title>
		<link>http://feedproxy.google.com/~r/PrincetonSNS/~3/1a12XcrCwEE/</link>
		<comments>http://sns.cs.princeton.edu/2009/10/new-datacenter-networks/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 19:32:55 +0000</pubDate>
		<dc:creator>Mike Freedman</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Datacenters]]></category>
		<category><![CDATA[Network Architectures]]></category>
		<category><![CDATA[SCAFFOLD]]></category>

		<guid isPermaLink="false">http://sns.cs.princeton.edu/?p=540</guid>
		<description><![CDATA[This year&#8217;s HotNets workshop was held over the past two days in the faculty club at NYU; it was nice being on old turf.   The HotNets workshop has authors write 6-page &#8220;position&#8221; or &#8220;work-in-progress&#8221; papers on current &#8220;hot topics in networking&#8221; (surprise!).  Tucked into a cosy downstairs room, the workshop was nicely intimate and it [...]]]></description>
			<content:encoded><![CDATA[<p>This year&#8217;s <a href="http://conferences.sigcomm.org/hotnets/2009/index.html">HotNets workshop</a> was held over the past two days in the <a href="http://www.nyu.edu/torch.club/">faculty club at NYU</a>; it was nice being on <a href="http://en.wikipedia.org/wiki/Washington_Square_Park">old</a> <a href="http://www.joetheartofcoffee.com/">turf</a>.   The HotNets workshop has authors write 6-page &#8220;position&#8221; or &#8220;work-in-progress&#8221; papers on current &#8220;hot topics in networking&#8221; (surprise!).  Tucked into a cosy downstairs room, the workshop was nicely intimate and it saw lots of interesting questions and discussion.</p>
<p>One topic that was of particular interest to me were new ideas about datacenter networking; HotNets included two papers in each of two different research areas.</p>
<p>The first thematic area was addressing the problem of bisectional bandwidth within the datacenter. The problem is that each rack in a datacenter may have 40 machines, each potentially generating several Gbps of traffic.  Yet, all this traffic in typically aggregated at a single top-of-rack (ToR) switch, which often is the bottleneck in communicating with other racks.  (This is especially relevant for data-intensive workloads, such as <a href="http://labs.google.com/papers/mapreduce.html">Map</a> <a href="http://hadoop.apache.org/">Reduce</a>-style computations.)  Even if the ToR switch is configured with 4-8 10Gbps links, this alone can be insufficient.  For example, an all-L2 network, while providing easy auto-configuration and supporting VM mobility, cannot take advantage of this capacity:  Even if multiple physical paths exist between racks, the Ethernet spanning tree will only use one.  In addition, the traditional method of performing L2 address resolution (ARP) is broadcast and thus not scalable.</p>
<p>Multiple solutions to this problem are currently being explored.  In <a href="http://conferences.sigcomm.org/sigcomm/2009/">SIGCOMM &#8216;09</a> in late August, we saw three papers that proposed new L2/L3 networks to address this problem.  The first two leveraged the locator/ID split, so that virtual resources are named by some identifier independent of their location.</p>
<ul>
<li><a href="http://www.cs.ucsd.edu/~vahdat/papers/portland-sigcomm09.pdf">PortLand</a> from UCSD effectively proposed a NAT layer for MAC addresses.  In Portland, virtual machines running on physical hosts can keep a permanent MAC address (identifier) even under VM migration, but their immediate upstream switch provides a location-specific &#8220;pseudo&#8221; MAC (the locator). Because these pseudo MACs are allocated hierarchically, they can be efficiently aggregated in upstream switches.  PortLand assumes that datacenter networks have a classic fat tree-like hierarchy between racks of servers, which is the typical network architecture in datacenters.  Instead of routing a packet to a VM&#8217;s MAC address, PortLand performs forwarding based on this pseudo-MAC; the VM&#8217;s upstream switch NATs between this PMAC and its permanent MAC. No end-host modifications need to be made (although one can certainly envision the host&#8217;s hypervisor to perform such NATting on the end-host itself before dispatching the packet to the unmodified VM). The sender is also unaware of this process, as its immediate upstream switch (resp. hypervisor) first translates the destination from MAC to PMAC before sending it out over the datacenter network. The question remains how to discover the MAC-to-PMAC binding, and Portland assumes a centralized lookup controller that stores these bindings and updates them under VM migration, much like the controller in <a href="http://yuba.stanford.edu/ethane/">Ethane</a>.  (In fact, Portland was prototyped using <a href="http://www.openflowswitch.org/">OpenFlow</a>, which came out of Ethane.)</li>
</ul>
<ul>
<li><a href="http://research.microsoft.com/apps/pubs/default.aspx?id=80693">VL2</a> from MSR includes both L2 and L3 elements, unlike Portland&#8217;s L2-only solution. Changhoon Kim presented this work; he was a recent PhD graduate from Princeton (and in fact I served on the committee for his thesis, which included VL2). VL2 particularly focused on achieving both high bisectional bandwidth and good fairness between competing flows.    Using data collected from Microsoft&#8217;s online services, they found a high degree of variance between flows.  The implications of this is that a static allocation of bandwidth wouldn&#8217;t be all that promising, unless one managed to fully provision for high bisectional-bandwidth everywhere, which would be quite expensive. One of the particularly nice things about their evaluation (and implementation)&#8212;certainly aided by the support of an industrial research lab!&#8212;is that it ran on a  cluster consisting of 3 racks, 80 servers, and 10 switches, so provided at least some limited scaling experience.<br />
<a href="http://sns.cs.princeton.edu/wp-content/uploads/2009/08/vl2-large.png"><img class="alignleft size-full wp-image-595" style="border: 0pt none;" title="vl2" src="http://sns.cs.princeton.edu/wp-content/uploads/2009/08/vl21.png" alt="vl2" width="400" height="261" /></a>On to specifics.  While Portland used &#8220;virtualized&#8221; Ethernet identifiers, VL2 assigns &#8220;virtualized&#8221; application-level IP addresses (AAs) to all nodes.  And rather than performing the equivalent of L2 NATing on the first-hop switches, VL2 uses unmodified switches but modifies end-hosts&#8212;in virtualized datacenter environments, it&#8217;s not terrible difficult to forklift upgrade your servers&#8217; OS&#8212;to perform location-specific address (LA) resolution.  This is the identifier/locator split.  So applications use location-independent IP addresses, but a module on end-hosts resolves an AA IP address to a specific location address (LA) of the destination&#8217;s top-of-rack switch, then encapsulates this AA packet within an LA-addressed IP header.  This module also serves to intercept ARP requests for LA addresses and convert ARP broadcasts into unicast lookups to a centralized directory service (much like in PortLand and Ethane).   While this addressing mechanism replaces broadcasts and serves as an indirection layer to support address migration, it doesn&#8217;t itself provide good bisectional bandwidth.  For this, VL2 uses both <a href="http://people.seas.harvard.edu/~valiant/">Valiant</a> Load Balancing (VLB) and Equal-Cost Multi-Path (ECMP) routing to spread traffic uniformly across network paths.  VLB makes use of a random intermediate waypoint to route traffic between two endpoints, while ECMP is used to select amongst multiple equal-cost paths.   With multiple, random intermediate waypoints, communication between two racks can follow multiple paths, and ECMP provides load balancing between those paths.  So, taken together, a packet from some source AA to a destination AA will first be encapsulated with the LA address of the destination&#8217;s ToR switch, which in turn is encapsulated with the the address of an intermediate switch for VLB.  This is shown in the figure to the left (taken from the VL2 paper). Interestingly, all of VL2&#8217;s mechanisms are built on backward-compatible network protocols (packet encapsulation, ECMP, OSPF, etc.).</li>
</ul>
<ul>
<li><a href="http://research.microsoft.com/pubs/81063/comm136-guo.pdf">BCube</a> from MSR Asia specifically focused on scaling bisectional bandwidth between nodes in <a href="http://www.datacenterknowledge.com/archives/2008/04/01/microsoft-embraces-data-center-containers/">shipping-container-based</a> modular datacenters.  This is a follow-on work to their <a href="http://ccr.sigcomm.org/online/?q=node/379">DCell</a> architecture from the previous year&#8217;s SIGCOMM.  BCube (and DCell) are, at their core, more complex interconnection networks (as compared to today&#8217;s fat trees) for wiring together and forwarding packets between servers.  They propose a connection topology that looks very much like a generalized hypercube.  So we are in fact seeing the rebirth of complex interconnection networks that were originally proposed for parallel machines like Thinking Machine&#8217;s CM-5; now it&#8217;s just for datacenters rather than supercomputers.  Actually wiring together such complex networks might be challenging, however, compared to today&#8217;s fat-tree architecture.</li>
</ul>
<p>So these proposals all introduced new L2/L3 network architectures for the datacenter.  In HotNets, we saw more proposals for using different <em>technologies</em>, as opposed to new <em>topologies</em> (to borrow a phrase from <a href="http://conferences.sigcomm.org/hotnets/2009/papers/hotnets2009-final52.pdf">here</a>):</p>
<ul>
<li>A group from Rice, CMU, and Intel Pittsburgh <a href="http://conferences.sigcomm.org/hotnets/2009/papers/hotnets2009-final52.pdf">argued</a> that traditional electrically-switched networks (i.e., Ethernet) in the datacenter should be accompanied by an optically-switched network for bulk data distribution.  This proposal takes advantage of reconfigurable optical switches to quickly set up light-paths between particular hosts for large transfers.  So their resulting system is a hybrid:  using electrical, <em>packet-switched</em> networks for small flows or for those requiring low-latency, but using optical, <em>circuit-switched</em> networks for large flows that can withstand the few millisecond delay necessary to reconfigure the optical switches.   And these types of larger flows are especially prevalent in data-intensive workloads (e.g., scientific computing and MapReduce).</li>
<li>A group from Microsoft Research <a href="http://conferences.sigcomm.org/hotnets/2009/papers/hotnets2009-final112.pdf">focused</a> on a similar problem&#8212;the paper&#8217;s presenter even joked that he could just skip his motivation slides.  But instead of proposing a hybrid electric/optical network, they argued for a hybrid wired/wireless network, where wireless links are used to provide a &#8220;fly-way&#8221;  between servers.  Instead of using these additional links for large transfers (as in the above proposal), however, this work uses these additional links to handle transient overages on the existing wired network.  Because it&#8217;s a wireless network, one doesn&#8217;t need to physically wire them up in place; the paper suggests that wireless connections in the 60GHz band might be especially useful given some prototypes that achieve 1-15 Gbps at distances of 4-10m.  The paper also discusses <em>wired</em> fly-ways by using additional switches to inter-connect random subsets of ToR switches, but the talk seemed to focus on the wireless case.</li>
</ul>
<p>Either way, it&#8217;s interesting to see competing ideas for using different technologies to handle bisectional capacity problems (whether transient or persistent).</p>
<p>HotNet&#8217;s second thematic area of datacenter network papers considers managing all this new complexity.  There were two papers on <a href="http://conferences.sigcomm.org/hotnets/2009/papers/hotnets2009-final103.pdf">NOX</a>, which is a network controller for managing <a href="http://www.openflowswitch.org/">OpenFlow</a> networks.</p>
<ul>
<li>The first <a href="http://conferences.sigcomm.org/hotnets/2009/papers/hotnets2009-final103.pdf">paper</a> asked the question whether we needed special networking technologies to support new datacenter architectures (the talk focused specifically on the problem of building VL2), or whether we could construct similar functionality via NOX and OpenFlow switches.  They found (perhaps not surprisingly) that NOX could be sufficient.</li>
<li> The second NOX <a href="http://conferences.sigcomm.org/hotnets/2009/papers/hotnets2009-final143.pdf">paper</a> focused on greater support for virtualized end-hosts.  <a href="http://openvswitch.org/">OpenVSwitch</a> is meant to work with various end-host virtualization technologies (Xen, KVM, etc.) and provide functionality for managing their virtual network interfaces (instead of, e.g., Xen&#8217;s simple Ethernet bridge).  Openvswitch can be used, for example, to setup particular routes between VM instances or to provide encapsulation and tunneling between VMs.  The latter could enable L3 migration of VMs, with a VM&#8217;s old physical location forwarding packets to the VM&#8217;s new location (akin to Mobile IP).  Traditional VM migration, on the other hand, uses ARP spoofing and is thus limited to migration between hosts on the same L2 network.</li>
</ul>
<p>This ability to perform more fine-grain network resource management is very interesting.  While most of these above papers (except the latter one) focus on supporting L2/L3 addressing and connectivity, our own SCAFFOLD project looks at the higher-level problem of supporting wide-area, distributed services.   Distributed services typically scale-out by replicating functionality across many machines; for customer-facing services, some combination of additional mechanisms are used for server selection and failover:  DNS, BGP tricks and IP anycast, VRRP, VIP/DIP load balancers, ARP spoofing, etc.  All this complexity is because, while clients are trying to access replicated <em>services</em>, the Internet provides communication between unicasted <em>hosts</em>.  Thus, SCAFFOLD explores building a network architecture that supports communication between services, instead of network interfaces, and that explicitly supports <em>churn</em> (whether planned or unplanned) amongst the set of end-hosts composing that service.  I&#8217;ll expand on SCAFFOLD&#8217;s motivation and design more in a future post.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=1a12XcrCwEE:53N3HTA36BE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=1a12XcrCwEE:53N3HTA36BE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?i=1a12XcrCwEE:53N3HTA36BE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=1a12XcrCwEE:53N3HTA36BE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=1a12XcrCwEE:53N3HTA36BE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?i=1a12XcrCwEE:53N3HTA36BE:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PrincetonSNS/~4/1a12XcrCwEE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sns.cs.princeton.edu/2009/10/new-datacenter-networks/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://sns.cs.princeton.edu/2009/10/new-datacenter-networks/</feedburner:origLink></item>
		<item>
		<title>CoralCDN Lesson:  The great naming conflation of the Web</title>
		<link>http://feedproxy.google.com/~r/PrincetonSNS/~3/Xxn3u8iIveY/</link>
		<comments>http://sns.cs.princeton.edu/2009/09/coralcdn-lesson-the-great-naming-conflation-of-the-web/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 03:29:59 +0000</pubDate>
		<dc:creator>Mike Freedman</dc:creator>
				<category><![CDATA[Content Distribution]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[CoralCDN]]></category>

		<guid isPermaLink="false">http://sns.cs.princeton.edu/?p=553</guid>
		<description><![CDATA[The last post argued how CoralCDN&#8217;s API through domain manipulation provided a simple yet surprisingly powerful content delivery mechanism.  Unfortunately, its technique flies in the face of the web&#8217;s use of domain names.
Conflating naming, location, and authorization, browsers use domains for three purposes:

Domains provide a human-readable name for what administrative entity a client is interacting [...]]]></description>
			<content:encoded><![CDATA[<p>The last post argued how CoralCDN&#8217;s API through domain manipulation provided a simple yet surprisingly powerful content delivery mechanism.  Unfortunately, its technique flies in the face of the web&#8217;s use of domain names.</p>
<p>Conflating naming, location, and authorization, browsers use domains for three purposes:</p>
<ol>
<li>Domains provide a human-readable name for what administrative entity a client is interacting with (e.g., the &#8220;common name&#8221; identified in SSL server certificates).</li>
<li>Domains specify where to retrieve content after they are resolved to IP addresses (through DNS).</li>
<li>Domains specify what security policies to enforce on web objects and their interactions, especially as it relates to browser <a href="http://en.wikipedia.org/wiki/Same_origin_policy">Same Origin Policy</a> (SOP).</li>
</ol>
<p>CoralCDN&#8217;s domain manipulation clearly focuses on the location/addressing aspect of web objects (#2).  And while it has generated abuse complaints given its naming (#1)&#8212;either from sites complaining about &#8220;illegal mirroring,&#8221; third-parties mistakenly <a href="http://www.planet-lab.org/files/PL45353_dmca_notice.pdf">issuing</a> <a href="http://wiki.coralcdn.org/wiki.php?n=Main.FAQ#dmca">DMCA</a> take-down notices, or from <a href="http://www.planet-lab.org/files/PL40486_email_spoofing_passwd_phishing.pdf">those</a> fearing phishing attacks&#8212;its most serious implications apply to browser security (#3).</p>
<p>The Same Origin Policy in browsers specifies how scripts and instructions from an origin domain can access and modify browser state.  This policy most significantly applies to manipulating cookies, browser windows, frames, documents (through the <a href="http://en.wikipedia.org/wiki/Document_object_model">DOM</a>), as well as to requesting URLs via an XmlHttpRequest. At its simplest level, all of these behaviors are only allowed between resources that belong to the identical origin domain.  This provides security against sites accessing each others&#8217; private information kept in cookies, for example.  It also prevents websites that run advertisements (such as Google&#8217;s <a href="https://www.google.com/adsense/">AdSense</a>) from easily performing click fraud and pay themselves advertising dollars by programmatically &#8220;clicking&#8221; on the advertisements shown on their site.  (This is enforced because advertisements like AdSense are loaded in an iframe that the parent &#8220;document&#8221;&#8212;the third-party website that stands to gain revenue&#8212;cannot access, as the frame belongs to a different domain.)</p>
<p>One caveat to the strict definition of an identical origin (per <a href="http://www.faqs.org/rfcs/rfc2965.html">RFC-2965</a>) is that it provides an exception for domains that share the same domain.tld suffix, in that www.example.com can read and set cookies for example.com.  Consider, however, how CoralCDN&#8217;s domain manipulation effects this.  When example.com is accessed via CoralCDN, it can manipulate all nyud.net cookies, not just those restricted to example.com.nyud.net.  Concerned with the potential privacy violations from this, CoralCDN does not &#8220;support&#8221; cookies, in that its proxies delete any Cookie or Set-Cookie HTTP headers.</p>
<p>Many websites now manage cookies via javascript, however, so cookie information still &#8220;leaks&#8221; between Coralized domains on the browser. This happens often without a site&#8217;s knowledge, as sites commonly use the URL&#8217;s domain suffix without verifying its name. Thus, if the Coralized example.com writes nyud.net cookies, these will be sent to evil.com.nyud.net if the client visits that webpage. Honest CoralCDN proxies will delete these cookies in transit, but attackers can still circumvent this problem.  For example, when a client visits evil.com.nyud.net, javascript from that page can access nyud.net cookies, then issue a XmlHttpRequest back to  evil.com.nyud.net with cookie information embedded in the URL.  These problems are mitigated by other security decisions: As CoralCDN does not support https or POST, it is unlikely that sites will establish authenticated sessions over it.  Given these attack vectors, however, simply opening up CoralCDN to a peer-to-peer deployment as is would introduce significant risk.  Similar attacks would be possible against other uses of the Same Origin Policy in the browser, especially as it relates to the ability to access and manipulate the DOM.</p>
<p>These issues demonstrate other challenges with deploying a secure, cooperative CDN, beyond the problem of finding the right &#8220;tradeoff&#8221; I talked about <a href="http://sns.cs.princeton.edu/2009/07/coralcdn-lesson-the-design-was-mostly-wrong/">previously</a>. It may be attractive to consider using end-hosts in a peer-to-peer fashion, perhaps even embedding proxy software in resource containers or VMs to satisfy those users&#8217; concerns.  If clients and servers can be slightly modified, end-to-end signatures (as in <a href="http://www.rfc-editor.org/rfc/rfc2660.txt">RFC 2660</a> and <a href="http://www.firecoral.net/">Firecoral</a>) can help ensure the integrity of content distributed through an untrusted proxy network.  Similar care would still need to be taken, however, to ensure the appropriate confidentiality of user-specific information.</p>
<p>In fact, these are some of the very challenges and approaches we are tackling with <a href="http://www.firecoral.net/">Firecoral</a>, which seeks to build a P2P-CDN by running &#8220;cooperative proxies&#8221; as a browser extension of participating peers. We&#8217;re actively working towards a release; hopefully any day now!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=Xxn3u8iIveY:F03yzAB3iuc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=Xxn3u8iIveY:F03yzAB3iuc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?i=Xxn3u8iIveY:F03yzAB3iuc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=Xxn3u8iIveY:F03yzAB3iuc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=Xxn3u8iIveY:F03yzAB3iuc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?i=Xxn3u8iIveY:F03yzAB3iuc:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PrincetonSNS/~4/Xxn3u8iIveY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sns.cs.princeton.edu/2009/09/coralcdn-lesson-the-great-naming-conflation-of-the-web/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://sns.cs.princeton.edu/2009/09/coralcdn-lesson-the-great-naming-conflation-of-the-web/</feedburner:origLink></item>
		<item>
		<title>CoralCDN Lesson: The interface was right -or- Programming elastic CDN services</title>
		<link>http://feedproxy.google.com/~r/PrincetonSNS/~3/FkOF65ucpg8/</link>
		<comments>http://sns.cs.princeton.edu/2009/08/coralcdn-lesson-the-interface-was-right-or-programming-elastic-cdn-services/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 17:24:13 +0000</pubDate>
		<dc:creator>Mike Freedman</dc:creator>
				<category><![CDATA[Content Distribution]]></category>
		<category><![CDATA[Experiences]]></category>
		<category><![CDATA[Interfaces]]></category>
		<category><![CDATA[CoralCDN]]></category>

		<guid isPermaLink="false">http://sns.cs.princeton.edu/?p=521</guid>
		<description><![CDATA[While my previous post argued that CoralCDN&#8217;s architecture design might not be ideal given its deployment, it has proven successful from the simple perspective of real-world use.  Rather than any technical argument, we believe that the central reason for its adoption has been its simple user interface: Any URL can be requested through CoralCDN [...]]]></description>
			<content:encoded><![CDATA[<p>While my previous post argued that CoralCDN&#8217;s architecture design might not be ideal given its deployment, it has proven successful from the simple perspective of real-world use.  Rather than any technical argument, we believe that the central reason for its adoption has been its simple user interface: Any URL can be requested through CoralCDN by appending nyud.net to its hostname.</p>
<h3>Interface design</h3>
<p>While superficially obvious, this interface design achieves several important deployment goals:</p>
<ul>
<li><strong><em>Transparency: </em></strong>Work with unmodified, unconfigured, and unaware web clients and web servers.</li>
<li><em><strong>Deep caching: </strong></em>Support the automatic retrieval of embedded images or links also through CoralCDN when appropriate.</li>
<li><strong><em>Server control:</em></strong> Not interfere with sites&#8217; ability to perform usage logging or otherwise control how their content is served (e.g., via CoralCDN or directly).</li>
<li><strong><em>Ad-friendly: </em></strong>Not interfere with third-party advertising, analytics, or other tools incorporated into a site.</li>
<li><strong><em>Forward compatible:</em></strong> Be amenable to future end-to-end security mechanisms for content integrity or other end-host deployed mechanisms.</li>
</ul>
<p>Consider an alternative, even simpler, interface design. <a href="http://en.wikipedia.org/wiki/RedSwoosh"> RedSwoosh</a>, <a href="http://code.google.com/p/dijjer/">Dijjer</a>, <a href="http://www.archive.org/web/freecache.php">FreeCache</a>, and <a href="http://codeen.cs.princeton.edu/coblitz/">CoBlitz</a>, among others, all embedded origin URLs within the URL&#8217;s relative path, e.g., http://nyud.net/example.com/file.  Not only is HTTP parsing simpler, but their nameservers do not need to synthesize DNS records on the fly (unlike CoralCDN&#8217;s DNS servers for *.nyud.net) and can take better advantage of client-side DNS caching.  Unfortunately, while such an interface supports the distribution of specifically named files, it fails to transparently load an HTML webpage: Any relative embedded links would lack the example.com prefix, and a proxy would thus be unable to identify to which origin domain it refers. (One alternative might be to try to rewrite pages to add such links, although active content such as javascript makes this notoriously difficult, even ignoring the goal of not modifying server content.)</p>
<p>CoralCDN&#8217;s approach, however, interprets relative links with respect to a page&#8217;s Coralized hostname, and thus transparently requests these objects through it as well.  But because CoralCDN does not modify body content, all absolute URLs continue to point to their origin sites. Thus, third-party advertisements are largely unaffected, and origin servers can use simple web beacons to log clients.  Origin sites retain control about how their content is displayed and, down the line, content may be amenable to verification through end-to-end content signatures (as in RFC2660) or <a href="http://www.cs.washington.edu/research/security/web-tripwire.html">web tripwire</a> tricks.</p>
<h3>An API for dynamic adoption</h3>
<p>CoralCDN was envisioned with manual URL manipulation in mind, whether by publishers editing HTML, users typing Coralized URLs, or third-party posters to Usenet groups or web portals submitting Coralized URLs.  After deployment, however, users soon began treating CoralCDN&#8217;s interface as an API for accessing CDN services.</p>
<p>On the client side, these techniques included simple browser extensions that offer &#8220;right-click&#8221; options to Coralize links or that provide a CoralCDN link when a page appears unavailable.  They also ranged to more complex integration into frameworks like Firefox&#8217;s <a title="Greasemonkey" href="https://addons.mozilla.org/firefox/addon/748">Greasemonkey</a>.  Greasemonkey allows third-party developers to write site-specific javascript code that, once installed by users, manipulates a site&#8217;s HTML content (usually through the DOM interface) whenever the user accesses it.  CoralCDN scripts for Greasemonkey include ones that automatically rewrite links, or that add Coralized links (in text or via tooltips) to posted articles on <a href="http://userscripts.org/scripts/show/921">Slashdot</a>, <a href="http://userscripts.org/scripts/show/8262">digg</a>, or other portals.  CoralCDN was also integrated directly into a number of client-side software for podcasting, such as Plone&#8217;s Plodcasting, Juice Receiver, and Easypodcast.  Given the view that podcasting served to &#8220;democratize&#8221; Internet radio broadcasting, this seemed to fit quite well with CoralCDN&#8217;s stated aims of &#8220;democratizing content publication&#8221;.</p>
<p>But perhaps the more interesting cases of CoralCDN integration are those on the server-side. In flash-crowd scenarios, smaller websites might become overloaded for a variety of reasons: bandwidth-limited to serve larger files (especially due to hosting contracts), CPU-limited given expensive scripts (e.g., PHP), or disk-limited given expensive database queries.  At the same time, their webserver(s) can often still handle the network interrupt and processing overhead for simple HTTP requests.  And further, websites often still want to get complete logs for all page accesses, especially given <em>Referer</em> headers.  Given such scenarios, a common use of CoralCDN is for origin servers to directly receive an HTTP request, but respond with an HTTP redirect (302) to a Coralized URL that will serve the actual content.</p>
<p>This is as simple as installing a server plugin and writing a few lines of code.  For example, the complete dynamic redirection rule using Apache&#8217;s <a href="http://www.modrewrite.com/">mod_rewrite</a> plugin is the following:</p>
<pre>   RewriteEngine on
   RewriteCond %{HTTP_USER_AGENT !^CoralWebPrx
   RewriteCond %{QUERY_STRING !(^|&amp;)coral-no-serve$
   RewriteRule ^(.*)$ http://%{HTTP_HOST.nyud.net %{REQUEST_URI [R,L]</pre>
<p>while similar plugins and scripts exist for other web platforms (e.g., the <a title="Digg Defender" href="http://elliottback.com/wp/digg-defender-a-plugin-for-wordpress/">Wordpress</a> blogging suite).</p>
<p>Redirection rules must be crafted somewhat carefully, still.  In the above example, the second line checks whether the client is a CoralCDN proxy and thus should be served directly.  Otherwise, a redirection loop could be formed.  Numerous server misconfigurations have omitted such checks; thus, CoralCDN proxies check for potential loops and return errors if present.  Amusingly, some <a href="http://it.slashdot.org/comments.pl?sid=119757&amp;cid=10100086">early users</a> during CoralCDN&#8217;s deployment caused recursion in a different way.  By submitting URLs with many copies of nyud.net appended to the hostname suffix:</p>
<pre>   http://example.com.nyud.net.nyud.net....nyud.net/</pre>
<p>they created a form of amplification attack against CoralCDN.  This single request caused a proxy to issue a number of requests, stripping the last instance of nyud.net off in each iteration.  Such requests are now rejected.</p>
<p>While the above dynamic rewriting rules apply for all content, other sites incorporate URL Coralization in more inventive ways:</p>
<pre>   RewriteCond %{HTTP_REFERER slashdot\.org [NC]
   RewriteCond %{HTTP_REFERER digg\.com [NC,OR]
   RewriteCond %{HTTP_REFERER blogspot\.com [NC,OR]</pre>
<p>Combined with the above, these rules redirect clients to CoralCDN if and only if the requester originates from particular high-traffic portals.  In Apache, such rules can be specified in .htaccess files and thus do not require administrative privileges. Other sites have even combined such tools with server plugins that monitor server load and bandwidth use, so that their servers only start rewriting requests under high load conditions.</p>
<p>These examples have shown users innovate with CoralCDN&#8217;s simple interface, which can be accessed like any other URL resource.  We have even recently seen Coralized URLs being dynamically constructed within client-side Flash ActionScript.  Indeed, CoralCDN&#8217;s most popular domain as of January 2009 was a <a href="http://www.tubetamil.com/">Tamil imitation</a> of YouTube that loads Coralized URLs from Flash animations of &#8220;recently watched&#8221; videos.</p>
<h3>An Elastic Computing Resource</h3>
<p>One of the most interesting aspects of these developments has been the adoption of CoralCDN as an elastic resource for content distribution, long before the term &#8220;cloud computing&#8221; was popularized and Amazon began offering CDN and other &#8220;surge&#8221; services.  Through completely automated means, work can get dynamically expanded out to use CoralCDN when websites require additional bandwidth resources, and contracted back when flash crowds abate.  Still without prior registration, sites can even specify between several options on how they would like CoralCDN to handle their requests. <em>X-Coral-Control</em> headers returned by webservers provide in-band signaling and are saved as cache meta-data, such as whether to &#8220;redirect home&#8221; when domains exceed their bandwidth limits (per our previous post).  But again, this type of control illustrates CoralCDN&#8217;s interface as a programmable API.</p>
<p>Admittedly, CoralCDN can provide free service (and avoid registration) because it operates on a deployment platform, PlanetLab, comprised of volunteer research sites.   On the flip side, CoralCDN&#8217;s popularity led it to quickly overwhelm the bandwidth resources allocated to PlanetLab by affiliated sites, leading to the fair-sharing mechanisms we described earlier.  My next (and final) post about our experiences with CoralCDN asks whether we should just move off a trusted platform like PlanetLab and accept untrusted operators.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=FkOF65ucpg8:g1khN0p75bc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=FkOF65ucpg8:g1khN0p75bc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?i=FkOF65ucpg8:g1khN0p75bc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=FkOF65ucpg8:g1khN0p75bc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=FkOF65ucpg8:g1khN0p75bc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?i=FkOF65ucpg8:g1khN0p75bc:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PrincetonSNS/~4/FkOF65ucpg8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sns.cs.princeton.edu/2009/08/coralcdn-lesson-the-interface-was-right-or-programming-elastic-cdn-services/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://sns.cs.princeton.edu/2009/08/coralcdn-lesson-the-interface-was-right-or-programming-elastic-cdn-services/</feedburner:origLink></item>
		<item>
		<title>CoralCDN Lesson:  The design was mostly wrong</title>
		<link>http://feedproxy.google.com/~r/PrincetonSNS/~3/Q2eI7g3HbUA/</link>
		<comments>http://sns.cs.princeton.edu/2009/07/coralcdn-lesson-the-design-was-mostly-wrong/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 05:31:43 +0000</pubDate>
		<dc:creator>Mike Freedman</dc:creator>
				<category><![CDATA[Content Distribution]]></category>
		<category><![CDATA[Experiences]]></category>
		<category><![CDATA[CoralCDN]]></category>

		<guid isPermaLink="false">http://sns.cs.princeton.edu/?p=408</guid>
		<description><![CDATA[Most of my posts about CoralCDN to date have discussed techniques to make the system more robust; now I discuss what it got wrong.  While nice, many of these optimizations were in fact moot: CoralCDN&#8217;s design is ill-suited for its current deployment and usage.
Let us frame this argument by first considering some usage statistics from [...]]]></description>
			<content:encoded><![CDATA[<p>Most of my posts about CoralCDN to date have discussed techniques to make the system more robust; now I discuss what it got wrong.  While nice, many of these optimizations were in fact moot: CoralCDN&#8217;s design is ill-suited for its current deployment and usage.</p>
<p><a href="http://sns.cs.princeton.edu/wp-content/uploads/2009/07/coral-uniq-reqs.png"><img class="alignleft size-medium wp-image-446" style="border: 0pt none;" title="coral-uniq-reqs" src="http://sns.cs.princeton.edu/wp-content/uploads/2009/07/coral-uniq-reqs-300x147.png" alt="coral-uniq-reqs" width="300" height="147" /></a>Let us frame this argument by first considering some usage statistics from CoralCDN&#8217;s deployment.  The available aggregate data from 167 of the ~250 operating CoralCDN nodes during one recent, randomly-chosen day (January 20, 2009) shows that these nodes received a total of 9.74M requests from 983K unique client IPs.  These requests were for 596K unique URLs at 9,895 domains.  The figure on the left plots the entire distribution of requests per URL: The most popular URL received 448K requests itself, while 420K URLs (a full 70%) received a single request.  These requests appear to follow the Zipf-like distribution common among web caching and proxy networks.</p>
<p><a href="http://sns.cs.princeton.edu/wp-content/uploads/2009/07/coral-fetch-stats.png"><img class="alignleft size-medium wp-image-447" style="border: 0pt none;" title="coral-fetch-stats" src="http://sns.cs.princeton.edu/wp-content/uploads/2009/07/coral-fetch-stats-300x85.png" alt="coral-fetch-stats" width="300" height="85" /></a>So, if a small number of pages are so popular, we might measure their working set size, to determine how much storage is actually required to handle a large fraction of the total requests.  This table provides such an analysis.  The most popular 0.01% of URLs account for more than 38% of the total requests to CoralCDN, yet require only 52MB of storage. 1% of URLs account for almost 80% of requests, yet still require only 1.8GB of storage.  Recall that each CoralCDN proxy on PlanetLab has a 3GB disk cache.</p>
<p>These workload distributions support one aspect of CoralCDN&#8217;s design: Content should be locally cached by the &#8220;forward&#8221; CoralCDN proxy directly serving end-clients, given that small to moderate size caches in these proxies can serve a very large fraction of requests.  This differs from the traditional DHT approach of just storing data on a small number of globally-selected proxies, so-called &#8220;server surrogates&#8221;.  (While not analyzed here, per-node local caching also supports geographic differences in request distributions, provided that clients interact with nearby proxies.)</p>
<p>On the other hand, such a workload points out the unnecessary complexity in CoralCDN&#8217;s design: Global cooperation through a highly-scalable DHT indexing layer has marginal benefit to hit rates. We see this result in the following breakdown:</p>
<blockquote><address> 76.7% hit in local cache</address>
<address>9.8% returned 4xx or 5xx error code</address>
<address> 7.0% fetched from origin site</address>
<address> 6.3% fetched from other CoralCDN proxy</address>
<address>&#8211;  2.3% from level-2 cluster (local)</address>
<address> &#8211;  1.8% from level-1 cluster</address>
<address>&#8211;  2.2% from level-0 cluster (global)</address>
</blockquote>
<p>In short, almost 77% of requests to proxies are satisfied locally, while only a little more than 6% result in cooperative transfers.  (The high rate of error messages is due to the <a href="http://sns.cs.princeton.edu/2009/06/coralcdn-lesson-fair-sharing-bandwidth-via-admission-control/">bandwidth management</a> of our underlying hosting service.)  A related result about the limits of cooperative caching had been observed earlier by <a href="http://portal.acm.org/citation.cfm?id=319153">Wolman et al</a>, but instead from the perspective of client hit rates.  During the original design of CoralCDN, we had thought that this result may not be directly applicable to CoralCDN&#8217;s main goal, which was to decrease origin server load, not increase client hit rate.  The concern was that non-cooperating groups of caches would each individually request content from the origin, potentially overloading it.</p>
<p>To assess the benefits of cooperative caching to reduce server load, consider the three main usage scenarios observed in CoralCDN:</p>
<ol>
<li> <em><strong>Random surfing:</strong></em> Recall that fully 70% of unique URLs through CoralCDN saw a single request. These may be from posted server links that are unpopular.  Or they may be from clients explicitly Coralizing links themselves (e.g., using client-side plugins) for a variety of reasons, such as (presumed) anonymity, censorship or filtering circumvention, or automated crawling.</li>
<li><strong><em>Resurrect this page:</em></strong> Users attempt to use CoralCDN to retrieve content that is otherwise unavailable due to a overloaded or unavailable origin server.  This commonly occurs after Coralized links are posted as backup links or in comments on portals like Slashdot:  &#8220;<a href="http://meta.slashdot.org/story/07/10/30/1524206/Slashdot-Charity-Buyers-Donate-Over-10000-To-the-EFF">Site</a> <a href="http://science.slashdot.org/story/06/05/08/114218/New-Huygens-Titan-descent-video-available">down</a>.  <a href="http://meta.slashdot.org/story/06/03/28/1855252/Slashdot-Firefox-Extension">Try</a> <a href="http://science.slashdot.org/story/05/05/07/1724254/Fast-Generation-of-3D-City-Models">the</a> <a href="http://science.slashdot.org/story/05/06/01/0227219/Too-Much-Homework-Can-Be-Counterproductive">Coral</a> <a href="http://slashdot.org/story/04/08/29/1429246/10Gbit-to-the-Home-by-2010">Cache</a>&#8220;</li>
<li><strong><em>Free bandwidth and flash crowds:</em></strong> The majority of requests to CoralCDN are for popular content, already widely cached, from a stable set of &#8220;customer&#8221; domains. Even its flash crowds <a href="http://sns.cs.princeton.edu/wp-content/uploads/2009/05/slashdot-data.png">occur on the order of minutes</a>, not seconds.</li>
</ol>
<p>These various use cases require different solutions, but CoralCDN&#8217;s design is not ideal for any of these cases:  It&#8217;s a jack-of-all-trades, master of none.</p>
<p>For unpopular content (use case #1), clients do not meaningfully change server-side load by using cooperative caching. Furthermore, the goal of censorship or anonymity circumvention can be better served simply through open proxies or specialized tools such as <a href="https://www.torproject.org/">Tor</a> (which recently saw a significant uptick from its use by Iranian protesters).</p>
<p>For long-term unavailable content (use case #2), CoralCDN is not designed for archival storage and durability.  For short-time horizons, on the other hand, if clients directly overload the server before CoralCDN can retrieve a valid copy of the content, its cooperation is also to no avail.  In fact, even if CoralCDN has already retrieved a valid copy of the file, many origin servers&#8212;especially those deployed via third-party hosting&#8212;cause it to replace good content with bad (as I discussed <a href="http://sns.cs.princeton.edu/2009/05/coralcdn-lesson-accepting-conservatively-and-serving-liberally/">earlier</a>).</p>
<p>Finally, for popular content (use case #3), one could imagine alternative cooperative strategies that only rely on regional cooperation.  Coral&#8217;s clustering algorithms would still be used for self-organizing the network into local groups, but a simple one-hop DHT could be used for content discovery (via consistent hashing).  After all, the above data shows that cooperation between proxies on a global scale (level-0) is only used to satisfy 2.2% of requests.  Such a strategy would easily scale to a CoralCDN network that is at least one order of magnitude larger than its current deployment.  Alternatively, to simply maintain its current 200&#8211;400 node deployment on PlanetLab, having each node maintain connectivity and liveness information about all others would certainly result in improved performance compared to its current &#8220;scalable&#8221; design.</p>
<p>One might ask, however, if CoralCDN remains the correct design for a truly Internet-scale cooperative CDN, where either the active working set or the number of participating proxies are several orders of magnitude larger.  Especially in the case of the latter, a single request from each distinct group could perhaps still overwhelm servers, which was our initial concern.  Unfortunately, a more &#8220;peer-to-peer&#8221; deployment&#8212;<em>which is what CoralCDN&#8217;s algorithms are designed for</em>&#8212;introduces a different problem if we wish to preserve CoralCDN&#8217;s compatibility with unmodified web clients and servers:  security.</p>
<p>There is nothing stopping malicious proxies from returning spam, malware, advertisements, or other modified content to unsuspecting web clients. I&#8217;ll return to this question of security and naming in a later post, but the overall implication seems to be a trade-off: either backwards compatible with today&#8217;s Web and a smaller deployment on trusted infrastructure (such as PlanetLab), or a more peer-to-peer deployment that requires end-host adoption.  In fact, this last point is one of the strong motivations behind our ongoing work on <a href="http://www.firecoral.net/">Firecoral</a>.</p>
<p>So that&#8217;s the downside of CoralCDN&#8217;s design.  But it did catch on beyond what we expected; mostly, I believe, because of its simple user interface that requires no registration and little knowledge, yet was eventually used in a variety of flexible, powerful ways.  In fact, our &#8220;customers&#8217;&#8221; interactions with CoralCDN portended the elastic use of cloud computing resources for (what <a href="http://berkeleyclouds.blogspot.com/2009/03/is-everything-cloud-computing.html">some</a> have called) <em>surge computing</em>.  I&#8217;ll discuss this in my next post.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=Q2eI7g3HbUA:mFf8qemDiF8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=Q2eI7g3HbUA:mFf8qemDiF8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?i=Q2eI7g3HbUA:mFf8qemDiF8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=Q2eI7g3HbUA:mFf8qemDiF8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=Q2eI7g3HbUA:mFf8qemDiF8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?i=Q2eI7g3HbUA:mFf8qemDiF8:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PrincetonSNS/~4/Q2eI7g3HbUA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sns.cs.princeton.edu/2009/07/coralcdn-lesson-the-design-was-mostly-wrong/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://sns.cs.princeton.edu/2009/07/coralcdn-lesson-the-design-was-mostly-wrong/</feedburner:origLink></item>
		<item>
		<title>Bridging the Gap with HashCache</title>
		<link>http://feedproxy.google.com/~r/PrincetonSNS/~3/WMdOb3Dz5Dw/</link>
		<comments>http://sns.cs.princeton.edu/2009/07/bridging-the-gap-with-hashcache/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 23:34:17 +0000</pubDate>
		<dc:creator>Anirudh Badam</dc:creator>
				<category><![CDATA[Content Distribution]]></category>
		<category><![CDATA[Technology for Developing Regions]]></category>
		<category><![CDATA[HashCache]]></category>

		<guid isPermaLink="false">http://sns.cs.princeton.edu/?p=430</guid>
		<description><![CDATA[[Today we'll be having a guest post by Anirudh Badam, a PhD student in the larger Network Systems Group at Princeton, related to systems research for developing regions.  The work he'll be talking about was recently named one of Technology Review's Top 10 Emerging Technologies for 2009.  -- Mike]
To provide Internet connectivity in the developing [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left"><em>[Today we'll be having a guest post by Anirudh Badam, a PhD student in the larger <a href="http://nsg.cs.princeton.edu/">Network Systems Group</a> at Princeton, related to systems research for developing regions.  The work he'll be talking about was recently named one of Technology Review's <a href="http://www.technologyreview.com/web/22119/">Top 10 Emerging Technologies</a> for 2009.  -- Mike]</em></p>
<p style="text-align: left">To provide Internet connectivity in the developing world is a daunting task, with problems pertaining to a high cost of bandwidth, ill-provisioned equipment and power, scarcity of on-site expertise, and adverse environmental conditions. Most common way to offset bandwidth cost/consumption is to deploy high-performance web proxy caches at the edge. Such high-performance proxies, primarily designed for the developed world, run as a dedicated service on a well-provisioned server with a large amount of RAM. The problems with &#8220;porting&#8221; this solution as-is are manifold and would only exacerbate the problems pertaining to power consumption and adverse environmental conditions. The initial expenditure involved for acquiring such powerful servers would make inventory control harder and also make deployments expensive because of having to supply, manage and maintain not only the end host laptops and but also their servers.</p>
<p style="text-align: left">A high-performance, efficient cache storage engine which can index large disks is essential not only for static web caching but also for enabling other bandwidth/latency reduction techniques like WAN acceleration and web pre-fetching. Disk price is plummeting by the month and is currently at a dime/GB, but the price of a server which can index a terabyte disk could be anywhere between $1000 to $2000. Such servers will have high power consumption due to large amounts of RAM and the requirement of an operational temperature that further complicates the problem. Further, most of the RAM has to be dedicated to provide only a web cache, which is undesirable considering the low bandwidths in these environments. Cheap laptops and netbooks, on the other hand, are ruggedized for developing world environments. They are made for low power consumption and are designed for use in adverse environmental conditions where power might be irregular. If we can design a cache storage engine which can run efficiently on cheap laptops and index terabytes of disk, then we will be able to address an important problem that arises in providing good web services for developing-regions. Laptops solve the problems pertaining to power, environment, and maintenance, whereas large disks solve the problems pertaining to low bandwidth.</p>
<p style="text-align: left">Our work, HashCache, is a configurable cache storage engine which can index terabytes of disk by using 6 to 20 times less memory compared to traditional web proxy caches.</p>
<p style="text-align: left"><a href="http://sns.cs.princeton.edu/wp-content/uploads/2009/07/hashcache.jpg"><img class="alignleft size-medium wp-image-462" style="border: 0pt none" src="http://sns.cs.princeton.edu/wp-content/uploads/2009/07/hashcache-300x210.jpg" alt="hashcache" width="300" height="210" /></a>The high memory requirement of traditional proxies stems from two reasons. First, regular hashtable data structures spend a lot of memory on pointers and keys. Second, they alienate the disk, which is the performance bottleneck, by using it only as a storage device. HashCache is an entirely new way of building a disk cache engine with indexing schemes devoid of any pointers and the disk itself being used as an application-level data structure. What this does is enable the minimal usage of memory for indexing and allow the application to directly interact with the disk, which is the performance bottleneck. HashCache is a range of disk indexing policies ranging from ones using no main memory at all for indexing to ones which consume 6-10 times less memory than traditional high-end proxies yet provide similar or better performance. The figure on the left illustrates the comparison. It shows cost vs. performance comparison of various HashCache policies and existing proxies.</p>
<p style="text-align: left">While the intricate details of the seven different policies can be found in our <a href="http://www.cs.princeton.edu/%7Eabadam/papers/hashcache.pdf">paper</a>, the following is a reasonable attempt at a summary. Traditional proxies build fully associative caches and hence their index hashtables need to contain pointers to be able to reference content that can possibly go at any location. The keys are the names (hashes of names) and the values are pointers in to the filesystem. The simplest HashCache policy uses that disk directly as a large set-associative hashtable with fixed sized bins, it stores the metadata of on-disk hashtable in main memory for speeding up lookup operations. The value in this hashtable is the final object itself. Restricting the number of locations that an object can be placed by using set-associativity and having those locations contiguous on the disk eliminates the requirement of pointers. It also reduces the number of bits needed to represent the hash value of the object name in the hashtable since the lower order bits can be decoded from the bin number in the hashtable. Objects larger than a bin need additional place for storage. The remaining part of the object is stored in a circular log. This bare-bones index needs 11 bits of RAM to index an object on the disk. The rest of the policies revolve around memory requirement and disk performance optimizations over this simple setting.</p>
<p><img class="size-large wp-image-502 alignleft" style="margin: 2px" src="http://sns.cs.princeton.edu/wp-content/uploads/2009/07/IMG_4294-1024x768.jpg" alt="IMG_4294" width="368" height="277" /></p>
<p style="text-align: left">We have built a web proxy cache using the HashCache indexing policies and have been actively deploying it freely for educational and academic purposes. A commercial offering of HashCache is also <a href="http://www.coblitz.com/solution.htm">planned</a>. Just a few days back, we helped a group at <a href="http://www.cals.cornell.edu/">Cornell College of Agriculture</a> to install HashCache and a WAN Accelerator on top of that called Waprox  at a node in Uganda. They are part of the <a href="http://www.wheatrust.cornell.edu/index.html">Durable Rust Resistance in Wheat</a> project and wish to use the node to download a large number of agricultural documentation for the education of local farmers. On the left is a picture of <a href="http://www.wheatrust.cornell.edu/people/StefanEinarson-Bio.cfm">Stefan Einarson</a> handing over the HashCache box to head of Crop Sciences at Makerere University in Uganda. We wish to continue doing such deployments for free for educational and academic purposes in the developing world. You can <a href="http://www.cs.princeton.edu/~abadam/hashcache.html">contact us</a> directly if you need faster connectivity for an educational project in a developing region. We will be glad to help.</p>
<p style="text-align: left">The future direction in this line of work is a larger project aimed at developing a networking stack for poorly provisioned edge networks. The idea is to develop on top of HashCache and provide a full software stack of bandwidth and latency reduction techniques including WAN Acceleration, web pre-fetching, local disk web-search engines and ultimately a generic offline cache of any popular website. Our proposal <a href="http://www.cs.princeton.edu/%7Eabadam/papers/ccc_devreg.pdf">paper</a> at the <a href="http://cra.org/ccc/globaldev.php">CCC Developing Regions Workshop</a> has more details. We are also working towards incorporating new and efficient memory technologies like flash memory to offset problems relating to scale and power. We are currently developing a hybrid memory management technique that takes into account the density and functionality differences of different memory types in a hybrid architecture and comes up with clever strategies to provide applications with large amounts of efficient random access memory. Stay tuned and we will keep you posted with the progress we make towards this developing regions network stack.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=WMdOb3Dz5Dw:b-aLUUzYWF8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=WMdOb3Dz5Dw:b-aLUUzYWF8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?i=WMdOb3Dz5Dw:b-aLUUzYWF8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=WMdOb3Dz5Dw:b-aLUUzYWF8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=WMdOb3Dz5Dw:b-aLUUzYWF8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?i=WMdOb3Dz5Dw:b-aLUUzYWF8:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PrincetonSNS/~4/WMdOb3Dz5Dw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sns.cs.princeton.edu/2009/07/bridging-the-gap-with-hashcache/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://sns.cs.princeton.edu/2009/07/bridging-the-gap-with-hashcache/</feedburner:origLink></item>
		<item>
		<title>Blog Name -&gt; Dirty Slate Design</title>
		<link>http://feedproxy.google.com/~r/PrincetonSNS/~3/a0dGR6EqyVI/</link>
		<comments>http://sns.cs.princeton.edu/2009/06/blog-name-dirty-slate-design/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 17:44:28 +0000</pubDate>
		<dc:creator>Mike Freedman</dc:creator>
				<category><![CDATA[Meta-Post]]></category>

		<guid isPermaLink="false">http://sns.cs.princeton.edu/?p=385</guid>
		<description><![CDATA[So after a few months of (occasional) posts, we finally decided to give the blog a name.
Dirty Slate Design reflects a design philosophy for systems and networking research, where deployability is a central goal.  While it&#8217;s often tempting to try to solve problems by wiping the slate clean and starting afresh, expecting a complete redesign [...]]]></description>
			<content:encoded><![CDATA[<p>So after a few months of (occasional) posts, we finally decided to give the blog a name.</p>
<p><strong>Dirty Slate Design</strong> reflects a design philosophy for systems and networking research, where deployability is a central goal.  While it&#8217;s often tempting to try to solve problems by wiping the slate clean and starting afresh, expecting a complete redesign and redeployment of systems as important, complex, and far-flung as the Web or the Internet is rather optimistic at best.</p>
<p>So, rather than implying something that is just &#8220;quick and dirty,&#8221; this philosophy tries to push new functionality or designs in a way that can be retrofitted into existing systems/networks or can reuse existing mechanisms in new ways, whenever possible.  This isn&#8217;t to say that clean-slate architectures don&#8217;t have their place, either as a &#8220;thought experiment&#8221; or something that&#8217;s trying to look farther over the horizon.   And we don&#8217;t want to restrain ourselves to incremental improvements given what&#8217;s possible with today&#8217;s mechanisms, protocols, or technologies.  Further,  what actually constitutes &#8220;clean-slate&#8221; versus &#8220;dirty-slate&#8221; is rather subjective (just look at the <a href="http://www.nets-find.net/">NSF FIND projects</a>, for example, where some of these could certainly be incrementally deployed on today&#8217;s Internet).  Rather, let&#8217;s worry about the &#8220;dirty details&#8221; because systems often have to make non-obvious engineering tradeoffs and operate in complex environments.  Because those dirty bits often lead to new, interesting research questions, and the ultimate goal should always be impact.</p>
<p>In the next few weeks or months, we should be describing a bunch of new projects that take some of these ideas to heart, mostly focusing on distributed systems and network architectures for geo-diverse datacenters.  Stay tuned.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=a0dGR6EqyVI:Gv2FmRmbaNs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=a0dGR6EqyVI:Gv2FmRmbaNs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?i=a0dGR6EqyVI:Gv2FmRmbaNs:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=a0dGR6EqyVI:Gv2FmRmbaNs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=a0dGR6EqyVI:Gv2FmRmbaNs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?i=a0dGR6EqyVI:Gv2FmRmbaNs:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PrincetonSNS/~4/a0dGR6EqyVI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sns.cs.princeton.edu/2009/06/blog-name-dirty-slate-design/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://sns.cs.princeton.edu/2009/06/blog-name-dirty-slate-design/</feedburner:origLink></item>
		<item>
		<title>CoralCDN Lesson: Interacting with virtualized and shared hosting services</title>
		<link>http://feedproxy.google.com/~r/PrincetonSNS/~3/jddmqg5Ekgo/</link>
		<comments>http://sns.cs.princeton.edu/2009/06/coralcdn-lesson-interacting-with-virtualized-and-shared-hosting-services/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 01:14:02 +0000</pubDate>
		<dc:creator>Mike Freedman</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Experiences]]></category>
		<category><![CDATA[System Management]]></category>
		<category><![CDATA[CoralCDN]]></category>

		<guid isPermaLink="false">http://sns.cs.princeton.edu/?p=350</guid>
		<description><![CDATA[In the previous post, I discussed how CoralCDN implemented bandwidth restrictions that were fair-shared between &#8220;customer&#8221; domains. There was another major twist to this problem, however, that I didn&#8217;t talk about: the challenge of performing such a technique on a virtualized and shared platform such as PlanetLab.  While my discussion is certainly PlanetLab-centric, its questions [...]]]></description>
			<content:encoded><![CDATA[<p>In the previous post, I discussed how CoralCDN implemented bandwidth restrictions that were fair-shared between &#8220;customer&#8221; domains. There was another major twist to this problem, however, that I didn&#8217;t talk about: the challenge of performing such a technique on a virtualized and shared platform such as PlanetLab.  While my discussion is certainly PlanetLab-centric, its questions are also applicable to other P2P deployments where users run peers within resource containers, or to commercial hosting environments using billing models such as 95th percentile usage.</p>
<h3>Interacting with hosting platforms</h3>
<p>CoralCDN&#8217;s self-regulation works well in trusted environments, and this approach is used similarly in other peer-to-peer (e.g., BitTorrent and tor) and server-side (e.g., Apache mod_bandwidth) environments.  But when the resource provider (such as PlanetLab, a commercial hosting service, or peer-to-peer end-users) wants to enforce resource restrictions, rather than assume the software functions correctly, the situation becomes more challenging.</p>
<p><a href="https://www.planet-lab.org/db/pub/slices.php">Many services</a> run on top of PlanetLab; CoralCDN only being one of them.  Each of these instances is allocated a resource container (a &#8220;slice&#8221;) across all PlanetLab nodes.  This doesn&#8217;t have the same level of isolation as a virtual machine instance, but its much more scalable (in number of slices per node, each per-node slice called in <em>sliver</em> in PlanetLab).</p>
<p>PlanetLab began enforcing average daily bandwidth limits per sliver in 2006; prior to that, sliver usage was all self-enforced. Thereafter, however, when a sliver hit 80% of its daily limit, the PlanetLab kernel began enforcing bandwidth caps (using Linux&#8217;s Hierarchical Token Bucket scheduler) as calculated over five-minute epochs.  CoralCDN&#8217;s daily limit is 17.2 GB/day per sliver to the public Internet.</p>
<p>So, we see here two levels of bandwidth control: admission control by CoralCDN proxies and rate limiting by the underlying hosting service. Even though CoralCDN uses a relatively conservative limit for itself (10 GB/day), it still surpasses the 80% mark (13.8 GB) of its hosting platform on 5&#8211;10 servers per day. And once this happens, these servers begin throttling CoralCDN traffic, leading to degraded performance.  The main cause of this overage is that, while CoralCDN counts successful HTTP responses, its hosting platform accounts for all traffic&#8212;HTTP, DNS, DHT RPCs, system log transfers, and other management traffic&#8212;generated by CoralCDN&#8217;s sliver.</p>
<p>Unfortunately, there does not appear to be sufficiently lightweight or simple user-space mechanisms for proper aggregate resource accounting.  Capturing all traffic via <code>libpcap</code>, for example, would be too heavy-weight for our purposes.  Furthermore, a service would often like to make its own policy-based queuing decisions based on application knowledge.  For example, CoralCDN would prioritize DNS traffic before DHT RPCs, HTTP traffic next, and log collection of lowest priority. This is difficult through application-level control alone, while using a virtualized network interface that pushes traffic back through a user-space network stack would be expensive.</p>
<p>CoralCDN&#8217;s experience suggests two desirable properties from hosting platforms that enforce resource containers.  First, these platforms should provide slivers with their current measured resource consumption in a machine-readable format and in real time.  Second, these platforms should allow slices to express policies that affect how the underlying platform enforces resource containment. While this pushes higher-level preferences into lower layers, such behavior is not easily performed at these higher layers (and thus compatible with the end-to-end argument).  And it might be as simple as exposing multiple resource abstractions for slices to use, e.g., multiple virtual network connections with different priorities.</p>
<p>Somewhat amusingly, one of CoralCDN&#8217;s major outages came from a PlanetLab misconfiguration that changed its bandwidth caps from GBs to MBs.  As all packets were delayed for 30 seconds within the PlanetLab kernel, virtually all higher-layer protocols (e.g., DNS resolution for <code>nyud.net</code>) were timing out.  Such occasional misconfigurations are par for the course, and PlanetLab Central has been an amazing partner over the years.  Rather than criticize, however, my purpose is to simply point out how increased information sharing can be useful.  In this instance, for example, exposing information would have told CoralCDN to shut down many unnecessary services, while policy-based QoS could have at least preserved DNS responsiveness.</p>
<h3>Over-subscription and latency sensitivity</h3>
<p>While CoralCDN faced bandwidth tensions, there were latency implications with over-subscribed resources as well.  With PlanetLab services facing high disk, memory, and CPU contention, and even additional traffic shaping in the kernel, applications face both performance jitter and prolonged delays.  For example, <a href="http://www.x-trace.net/wiki/doku.php">application-level trace</a> analysis performed on CoralCDN (in Chapter 6 of Rodrigo Fonseca&#8217;s <a href="http://www.eecs.berkeley.edu/Pubs/TechRpts/2008/EECS-2008-167.html">PhD thesis</a>) showed numerous performance faults that led to a highly variable client experience, while making normal debugging (&#8221;Why was this so slow?&#8221;) difficult.</p>
<p>These performance variations are certainly not restricted to PlanetLab, and they have been well documented in the literature across a variety of settings.  More recent examples have shown this in cloud computing settings.  For example, Google&#8217;s MapReduce found performance variations even among homogeneous components, which led to their speculative re-execution of work.  Recently, a <a href="http://www.usenix.org/events/osdi08/tech/full_papers/zaharia/zaharia.pdf">Berkeley study</a> of Hadoop on Amazon&#8217;s EC2 underscored how shared and virtualized deployment platforms provide new performance challenges.</p>
<p><a href="http://sns.cs.princeton.edu/wp-content/uploads/2009/06/cluster-timings.png"><img class="alignleft size-medium wp-image-357" style="border: 0pt none;" title="cluster-timings" src="http://sns.cs.princeton.edu/wp-content/uploads/2009/06/cluster-timings-300x205.png" alt="cluster-timings" width="300" height="205" /></a>CoralCDN saw the implications of performance variations most strikingly with its latency-sensitive self-organization.  Coral&#8217;s DHT hierarchy, for example, was based on nodes clustering by network RTTs. A node would join a cluster provided some minimum fraction (85%) of its members were below the specified threshold (30 ms for level 2, 80 ms for level 1).  This figure shows the measured RTTs for RPC between Coral nodes, broken down by levels (with vertical lines added at 30 ms, 80 ms, and 1 s). While these graphs show the clustering algorithms meeting their targets and local clusters having lower RTTs, the heavy tail in all CDFs is rather striking.  Fully 1% of RPCs took longer than 1 second, even within local clusters.</p>
<p>Another lesson from CoralCDN&#8217;s deployment was the need for stability in the face of performance variations, which are only worse in heterogeneous deployments.  This translated to the following rule in Coral.  A node would switch to a smaller cluster if fewer than 70% of a cluster now satisfy its threshold, and form a singleton only if fewer than 50% of neighbors are satisfactory.  Before leveraging this form of hysteresis, cluster oscillations were much more common (leading to many stale DHT references).  A related focus on stability helped improve <a href="http://usenix.org/events/nsdi07/tech/ledlie.html">virtual network coordinate systems</a> for both PlanetLab and Azureus&#8217;s peer-to-peer deployment, so it&#8217;s an important property to consider when performing latency-sensitive self-organization.</p>
<h3>Next up&#8230;</h3>
<p>In the next post, I&#8217;ll talk a bit about some of the major availability problems we faced, particularly because our deployment has machines with static IP addresses directly connected to the Internet (i.e., not behind NATs or load balancers).  In other words, the model that the Internet and traditional network layering was actually designed with in mind&#8230;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=jddmqg5Ekgo:JROeb_G3ABU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=jddmqg5Ekgo:JROeb_G3ABU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?i=jddmqg5Ekgo:JROeb_G3ABU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=jddmqg5Ekgo:JROeb_G3ABU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PrincetonSNS?a=jddmqg5Ekgo:JROeb_G3ABU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PrincetonSNS?i=jddmqg5Ekgo:JROeb_G3ABU:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PrincetonSNS/~4/jddmqg5Ekgo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sns.cs.princeton.edu/2009/06/coralcdn-lesson-interacting-with-virtualized-and-shared-hosting-services/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://sns.cs.princeton.edu/2009/06/coralcdn-lesson-interacting-with-virtualized-and-shared-hosting-services/</feedburner:origLink></item>
	</channel>
</rss>
