% -*- TeX-master: "report.tex" -*-

% Introduction

  % Motivation
    % Save external bandwidth
      % Money
      % Limited/no bandwidth
      % Results
    % Examples
      % music, video, web 
    % Make sure user don't store data they don't use (i.e. users only
    %   cache data)

  % Why not a centralized solution 
    % Requires specialized/additional equipment
    % Requires maintenance 
    % No central infrastructure is available like at a conference
    % legal issues like bittorrent traffic

  % 3 cases covered by our project
    % campus/organization
    % conference
    % airplane
    
  % contribution
    % platform  
    % kind of applications running on the platform

  % road map

Wide-area bandwidth is becoming an increasingly scarce and expensive
resource. Pages are populated more and more with rich media, and
bandwidth-hungry applications like Youtube are growing at an explosive
rate. As a result, ISPs are being forced to install increasingly
expensive infrastructure, passing the cost onto business and academic
customers.

Local-area bandwidth, on the other hand, is becoming increasingly
plentiful and cheap. Most computers nowadays have 100-Mbit or Gigabit
Ethernet cards, despite the fact that network transfer rates rarely
approach such levels. Moreover, laying local cable is cheap; most
offices and campuses tend to have strong interconnectivity. Since the
majority of network traffic is to external servers, local area
bandwidth tends to remain mostly unused.

Given these conditions, it would be nice if we could find a way to
trade wide-area bandwidth for local-area bandwidth. The key to doing
this is the observation that most internet traffic is redundant -- 25
to 40 percent of all browser requests are for web objects already
stored in the cache of another local client. If web browsers were
smart enough to retrieve the data from a local computer rather than
the origin server, global bandwidth usage would be significantly
decreased (not to mention the cost savings for organizations paying
hefty ISP bills.)

InHome is a peer-to-peer system that operates like a distributed
cache. Internet applications with appropriately-designed plugins can
query InHome for data that might be on local computers, falling back
to the origin server if the request times out or cannot be fulfilled.

The remainder of the paper discusses the design of the InHome system
and offers a new search algorithm for quickly locating cached
data. Section \ref{sec:Problem} provides a more detailed description
of the problem. Section \ref{sec:design} gives an overview of the
design of the InHome system. In Section \ref{sec:Search}, we elaborate
the searching algorithms that allow InHome to guarantee low
latency. Section \ref{sec:evaluation} contains evaluations of the
performance and resource costs of InHome's search algorithms. In
Section \ref{sec:case_study}, we take a more detailed look at how
InHome could be used as a distributed browser cache. Section
\ref{sec:Related_Work} covers related work in the literature. Finally,
Section \ref{sec:conclusion} concludes.
